gpt4 book ai didi

java - 使用 FileUtils.listFiles 递归查找目录

转载 作者:太空狗 更新时间:2023-10-29 22:32:11 25 4
gpt4 key购买 nike

我想收集目录下所有 文件的列表,特别是包括子目录。我不喜欢自己做事,所以我使用来自 Apache Commons IO 的 FileUtils.listFiles。所以我有类似的东西:

import java.io.File;
import java.util.Collection;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;

public class TestListFiles {
public static void main(String[] args) {
Collection<File> found = FileUtils.listFiles(new File("foo"),
TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
for (File f : found) {
System.out.println("Found file: " + f);
}
}
}

问题是,这似乎只能找到普通文件,而不是目录:

$ mkdir -p foo/bar/baz; touch foo/one_file
$ java -classpath commons-io-1.4.jar:. TestListFiles
Found file: foo/one_file

我已经将 TrueFileFilter 传递给两个过滤器,所以我想不出任何更包容的东西。我希望它列出:"foo"、"foo/one_file"、"foo/bar"、"foo/bar/baz"(以任何顺序)。

我也会接受非FileUtils 解决方案,但必须编写我自己的 BFS,甚至从我确实获得的列表中收集父目录集,这似乎很愚蠢。 (无论如何都会错过空子目录。)这是在 Linux 上,FWIW。

最佳答案

一个老答案,但这对我有用:

FileUtils.listFilesAndDirs(new File(dir), TrueFileFilter.INSTANCE, DirectoryFileFilter.DIRECTORY);

同时显示:

我使用:

FileUtils.listFilesAndDirs(new File(dir), new NotFileFilter(TrueFileFilter.INSTANCE), DirectoryFileFilter.DIRECTORY)

只显示目录,不显示文件...

关于java - 使用 FileUtils.listFiles 递归查找目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/900659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com