我有以下目录层次结构
$ 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]
有人可以帮帮我吗?在此先感谢!!
答案 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;