您的位置:首页 > 编程语言 > Java开发

java IO复习(三)

2016-03-23 17:37 344 查看
package com.zyw.io;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;

/**
* 目录实用工具
* from think in java
*/
public class Directory {
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) {
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 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)+"\n\nfiles: "+PPrint.pformat(files);
}
}
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),".");}
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 void main(String args[]){
System.out.println(walk("G:\\zyw",".*\\.class"));
}
}


package com.zyw.io;

import java.util.Arrays;
import java.util.Collection;

/**
* 打印工具
*/
public class PPrint {
public static String pformat(Collection<?> c){
if(c.size()==0) return "[]";
StringBuilder result=new StringBuilder("[");
for(Object elem:c){
if(c.size()!=1)
result.append("\n ");
result.append(elem);
}
if(c.size()!=1) result.append("\n");
result.append("]");
return result.toString();
}
public static void pprint(Collection<?> c){
System.out.println(pformat(c));
}
public static void pprint(Object[] c){
System.out.println(pformat(Arrays.asList(c)));
}
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: