应用过滤器时递归列出子目录/文件

时间:2014-07-19 17:34:09

标签: java directory directory-listing

我有以下目录层次结构

$ ls -R a
b   c

a/b:
x.db    y.db

a/b/x.db:
p0.txt  p1.txt

a/b/y.db:

a/c:
m.db

a/c/m.db:

我需要foo(FIle rootDir){  .... } 输出["a/b/x.db", "a/b/y.db", "a/c/m.db"]

代表foo(new File("a"))

我尝试过使用org.apache.commons.io.FileUtils失败了! 以下就是我试过的

private static Collection<File> foo(File rootDir) {
        return FileUtils.listFilesAndDirs(rootDir,
                FalseFileFilter.INSTANCE,
                new DirectoryFileFilter() {
                    @Override
                    public boolean accept(File file) {
                        if (file.getName().endsWith("db")) {
                            return true;
                        }
                        return false;
                    }
                }
        );
    }

此输出

[<parent_dir>/a]

有人可以帮帮我吗?在此先感谢!!

2 个答案:

答案 0 :(得分:0)

public void findFile(File dir){
   for(File f: dir.listFiles()){
       if(f.isDirectory()){
           findFile(f);
       }else if(f.getName().endsWith(".db")){
           System.out.prinltn(f.getName());
       }
   }
}

答案 1 :(得分:0)

请参阅Java教程Walking the File Tree

特别关注Finding Files

示例代码find.java&#34;递归文件树,查找与特定glob(过滤器)模式匹配的文件和目录。&#34;