<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Directory untilities

    A common task in programming is to perform operations on sets of files, either in the local directory or by walking the entire durectory tree.
    It is useful to have a tool that will produce the set of files for you.
    package think.in.java.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;

    /**
     * Produce a seqence of File objects that match a regular expression in either a local directory,
     * or by walking a directory tree.
     * 
    @author WPeng
     *
     * 
    @since 2012-11-2
     
    */
    public final class Directory {
        
        
    public static File[] local(File dir, final String regex){
            
    /** Returns an array of abstract pathnames denoting the files and directories in the directory 
             * denoted by this abstract pathname that satisfy the specified filter. 
    */
            
    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){
            
    //Overloaded
            return local(new File(path), regex);
        }
        
        
    // A two-tuple for returning a pair of objects
        public static class TreeInfo implements Iterable<File>{
            
    public List<File> files = new ArrayList<File>();
            
    public List<File> dirs = new ArrayList<File>();
            
    // The default iterable element is the file list
            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){
            
    // Begin recurion
            return recurseDirs(new File(start), regex);
        }
        
    public static TreeInfo walk(File start, String regex){
            
    // Overload
            return recurseDirs(start, regex);
        }
        
    public static TreeInfo walk(File start){
            
    // Everything
            return recurseDirs(start, ".*");
        }
        
    public static TreeInfo walk(String start){
            
    // Overload
            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// Regular file
                    if (item.getName().matches(regex)) {
                        result.files.add(item);
                    }
                }
            }
            
    return result;
        }
        
        
    // Simple validation test
        public static void main(String[] args){
            
    if(args.length == 0){
                System.out.println(walk(
    "D:\\Users\\wpeng\\workspace\\Hello\\src\\think\\in\\java\\io"));
            }
    else{
                
    for(String arg : args){
                    System.out.println(arg);
                }
            }
        }
        
        
    }

    package think.in.java.io;

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

    /**
     * Pretty-printer for collections
     * 
    @author WPeng
     *
     * 
    @since 2012-11-2
     
    */

    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)));
        }
    }

    /**
    dirs: [
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\1
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\2
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\3
    ]

    files: [
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\1.txt
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\2.txt
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\3.txt
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\Directory.java
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\DirList.java
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\DirList2.java
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\DirList3.java
     D:\Users\wpeng\workspace\Hello\src\think\in\java\io\PPrint.java
    ]
    */

    posted on 2012-11-02 14:19 鹽城小土包 閱讀(118) 評論(0)  編輯  收藏 所屬分類: J2EE

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿

    隨筆檔案(14)

    文章分類(18)

    文章檔案(18)

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日日夜夜精品免费视频| 日韩中文无码有码免费视频| 黑人大战亚洲人精品一区| 激情小说亚洲色图| 亚洲AV成人精品日韩一区18p| 噜噜综合亚洲AV中文无码| 四虎在线播放免费永久视频| 亚洲av无码一区二区三区四区| 成人永久免费高清| 另类图片亚洲校园小说区| 亚洲国产精品自在拍在线播放| 一级毛片不卡免费看老司机| 亚洲中文无韩国r级电影| 国产免费爽爽视频在线观看| 久久精品国产亚洲网站| 午夜免费啪视频在线观看| 亚洲综合久久1区2区3区| 国产在线观看麻豆91精品免费| 亚洲av永久无码嘿嘿嘿| 热久久精品免费视频| 日本一区二区在线免费观看| 亚洲综合熟女久久久30p| 未满十八18禁止免费无码网站| 久久精品国产亚洲AV蜜臀色欲| 国内自产拍自a免费毛片| 日韩免费码中文在线观看| 亚洲精品无码不卡在线播HE| 精品福利一区二区三区免费视频| 国产精品亚洲专区在线观看| 国产免费观看青青草原网站| a级毛片100部免费观看| 中文有码亚洲制服av片| 亚洲国产精品第一区二区三区| 日本免费在线观看| 亚洲熟妇AV一区二区三区浪潮| 免费在线不卡视频| 99re在线这里只有精品免费| 亚洲欧美日韩中文二区| 久久久久亚洲精品天堂久久久久久 | 亚洲国产精品成人AV在线| 不卡一卡二卡三亚洲|