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))); } }
相关文章推荐
- HashMap源码分析——JDK1.8
- Java中简单的读写锁实现
- 使用javap命令或者eclipse的Bytecode visualizer插件阅读java字节码文件
- struts学习之用户登录
- (转)Java集合框架:HashMap
- Javassist 字节码操作
- 20145129 《Java程序设计》第3周学习总结
- Java面向对象要点
- Java面向对象要点
- Java面向对象要点
- java web QQ(二)
- java source attacher
- SpringMVC返回json数据的配置方式
- java 通用的返回类
- Spring中@Async用法总结
- Java过滤器与SpringMVC拦截器之间的关系与区别
- java垃圾回收机制和内存溢出
- struts2应用
- spring mvc 异步加载tree
- Java中jre 和 jdk 的区别