zoukankan      html  css  js  c++  java
  • java IO复习(三)

    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)+"
    
    files: "+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("
     ");
                result.append(elem);
            }
            if(c.size()!=1) result.append("
    ");
                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)));
        }
    }
    
    
    
    
    
  • 相关阅读:
    自己定义九宫格手势解锁
    2015程序猴的总结:不破楼兰终不还!
    Codeforces Round #402 (Div. 2)
    [整体二分]【学习笔记】【更新中】
    BZOJ 3110: [Zjoi2013]K大数查询 [整体二分]
    BZOJ 2738: 矩阵乘法 [整体二分]
    BZOJ 2527: [Poi2011]Meteors [整体二分]
    [偏序关系与CDQ分治]【学习笔记】
    BZOJ 2244: [SDOI2011]拦截导弹 [CDQ分治 树状数组]
    COGS 2479. [HZOI 2016]偏序 [CDQ分治套CDQ分治 四维偏序]
  • 原文地址:https://www.cnblogs.com/yunwuzhan/p/5312086.html
Copyright © 2011-2022 走看看