package com.scnulh.util;
import java.util.List;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.regex.Pattern;
public class Directory {
public static class TreeInfo implements Iterable<File>{
public List<File> files=new ArrayList<File>();
public List<File> dirs=new ArrayList<File>();
@Override
public Iterator<File> iterator() {
return files.iterator();
}
void addAll(TreeInfo other)
{
files.addAll(other.files);
dirs.addAll(other.dirs);
}
public String toString()
{
return "dirs:"+PPrint.pformat(dirs)+
"\nfiles:"+PPrint.pformat(files);
}
}
/**
* 递归生成目录及文件树
* @param startDir
* @param regex
* @return
*/
static TreeInfo recurseDirs(File startDir,String regex)
{
TreeInfo result=new TreeInfo();
for(File item:startDir.listFiles())
{
if(item.isDirectory())
{
result.dirs.add(item);
result.addAll(recurseDirs(item, regex));
}
else if(item.getName().matches(regex))
result.files.add(item);
}
return result;
}
public static TreeInfo walk(String start,String regex)
{
return recurseDirs(new File(start), regex);
}
public static TreeInfo walk(File start,String regex)
{
return recurseDirs(start, regex);
}
public static TreeInfo walk(File start)
{
return recurseDirs(start, ".*");
}
public static TreeInfo walk (String start)
{
return recurseDirs(new File(start), ".*");
}
public static File[] local(File dir,final String regex)
{
return dir.listFiles(new FilenameFilter() {
private Pattern pattern=Pattern.compile(regex);
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return pattern.matcher(new File(name).getName()).matches();
}
});
}
public static File[] local(String path,final String regex)
{
return local(new File(path),regex);
}
public static void main(String[] args)
{
PPrint.pprint(Directory.walk(".").files);
for(File file:Directory.walk(".", ".*.*\\.class$"))
{
System.out.println(file);
}
}
}
分享到:
相关推荐
读/写属性文件的工具类. PropertyUtil.java对Property文件读写进行了封装, 使开发人员对Property文件的读写更加容易。 在性能、实用性 方面还是可以的。
PropertyUtil配置文件读写工具类,超级简便的代码,超级实用
实用的INI读写类 ini 配置文件 读写 C# 实用的INI读写类 ini 配置文件 读写 C# 实用的INI读写类 ini 配置文件 读写 C#
文件读写 文件夹读写 各种加密解密 XML操作 NET实用类集-DotNet.Utilities.7z\C#实用类集-DotNet.Utilities
简单读写INI文件类,每次开发项目都需要读写INI,这个类简单实用,INI文件不存在可以自动创建,可以写初始值。
Vc++读写csv文件的类,这个资源是读写CSV文件的非常实用的类。方法写得非常好,代码也写得非常简洁,很合适在实际项目中使用
INI文件读写类,可以直接引用,相当有实用价值。
Vc++读写csv文件的类,这个资源是读写CSV文件的非常实用的类。方法写得非常好,代码也写得非常简洁,很合适在实际项目中使用。经本人测试,只要把上面的代码CSVOperator.h、CSVOperator.cpp和StringParser.h拷贝到...
一个简单的C++读取XML文件的类,不同于网上其他类 特点:简介/实用
本段代码描述了如何使用C++的fstream库来读写文本文件和二进制文件。对于文本文件,我们使用std::ofstream和std::ifstream类,并通过流操作符和>>或std::istreambuf_iterator来写入和读取文本数据。对于二进制文件,...
C#读写ini文件测试实例,自己写的一个小程序,可以运行操作,代码简单实用,已经把读写.ini文件提取以一个类里,界面直接调用这个类的方法就行了.
VC 读写INI文件类以及示例程序,功能主要是将左边列表框的学生姓名写入ini文件,然后从该ini文件读出放到右边的列表框中。属于比较典型且基础的VC 读写INI文件的例子,INI文件一般是作为配置文件,在程序运行的过程...
该接口主要使用面向对象的思想,将配置信息的保存和读取封装到对象中。这样做有以下三方面好处:一、配置信息读取方便,只需调用...很容易制作分析工具,自动根据配置信息类代码文件生成使用帮助文档。
INI配置文件读取,写入,生成LOG文件的一个DLL类,很实用
Excel读写类库,封装其他几个有POI类库实现对Excel文件的读取和保存数据到Excel,比较实用强大! 此Excel读写类库,比调用DotNet自带office库,强大。自己已经比较,稳定性、效率都大大提高。 DotNet自带Excel类库...
非常实用,10多M的文件复制只需0点几秒.
文件读写 文件夹读写 各种加密解密 XML操作 #region 获得用户IP /// /// 获得用户IP /// public static string GetUserIp() { string ip; string[] temp; bool isErr = false; if (System.Web....
适合java新手去看看 各种实用的方法
1.非常简练易懂的JSON格式化小程序 2.实用的IO流管理,读写文件小程序,可改造 3.实际开发中临时写的自己用的,够用,不够完美