[Java] 打印目录和文件--摘自Java编程思想 →→→→→进入此内容的聊天室

来自 , 2020-06-15, 写在 Java, 查看 111 次.
URL http://www.code666.cn/view/442cde81
  1. //需要格式打印类  PPrint.java
  2. public class Directory {
  3.        
  4.         public static File[] local(File dir,final String regex) {
  5.                 return dir.listFiles(new FilenameFilter() {
  6.                         private Pattern pattern = Pattern.compile(regex);
  7.                         @Override
  8.                         public boolean accept(File dir, String name) {
  9.                                 // TODO Auto-generated method stub
  10.                                 return pattern.matcher(new File(name).getName()).matches();
  11.                         }
  12.                 });
  13.         }
  14.         @SuppressWarnings("static-access")
  15.         public static void main(String[] args) {
  16.                 if(args.length == 0) {
  17.                         System.out.println("===============AllFile=============");
  18.                         System.out.println(new TreeInfo().walk(".",RegexString.SUFFIX_ALL));//,RegexString.SUFFIX_ALL表示正则表达式
  19.                         System.out.println("===============.java===============");
  20.                         System.out.println(new TreeInfo().walk(".",RegexString.SUFFIX_JAVA));
  21.                         System.out.println("===============.class===============");
  22.                         System.out.println(new TreeInfo().walk(".",RegexString.SUFFIX_CLASS));
  23.                          
  24.                 }else {
  25.                         for(String arg : args) {
  26.                                 System.out.println(new TreeInfo().walk(arg,".*"));
  27.                         }
  28.                 }
  29.         }
  30.         public static class TreeInfo implements Iterable<File>{
  31.                 public List<File> files = new ArrayList<File>();//文件
  32.                 public List<File> dirs = new ArrayList<File>();//目录
  33.                
  34.                 @Override
  35.                 public Iterator<File> iterator() {
  36.                         // TODO Auto-generated method stub
  37.                         return files.iterator();
  38.                 }
  39.                 void addAll(TreeInfo other) {//加入集合
  40.                         files.addAll(other.files);
  41.                         dirs.addAll(other.dirs);
  42.                 }
  43.                 public String toString() {
  44.                         return "dirs: " + PPrint.pformat(dirs) + "\n\nfiles: " + PPrint.pformat(files);
  45.                 }
  46.                 public static TreeInfo walk(String start,String regex) {//文件目录,正则表达式(文件格式)
  47.                         return recurseDirs(new File(start),regex);
  48.                 }
  49.                 private static TreeInfo recurseDirs(File startDir, String regex) {
  50.                         // TODO Auto-generated method stub
  51.                         TreeInfo result = new TreeInfo();
  52.                         for (File item : startDir.listFiles()) {
  53.                                 if(item.isDirectory()) {//判断是否是目录
  54.                                         result.dirs.add(item);
  55.                                         result.addAll(recurseDirs(item, regex));//递归调用自己
  56.                                 }else {
  57.                                         if(item.getName().matches(regex))//判断符合正则
  58.                                                 result.files.add(item);
  59.                                 }
  60.                         }
  61.                         return result;
  62.                 }
  63.         }
  64. }

回复 "打印目录和文件--摘自Java编程思想"

这儿你可以回复上面这条便签

captcha