我们如何递归列出所有文件和文件夹?

How can we list all files and folders recursively?

通过 google 搜索,在此 SO 站点中,结果将使用来自 Apache Commons IO 的 FileUtils.listFilesAndDirs() 方法。

但此方法不会递归进入子文件夹 - 我们需要递归文件列表。

我们如何使用 Commons IO 来做到这一点?

P.S.:

一种本地方法是使用 JDK 本地支持的 File.listFiles() 已解决 here

您可以使用 FileUtils.listFiles(File base, String[] extensions, boolean recursive).

要检索所有文件,请将 recursive 设置为 true,将 extensions 设置为 null

 FileUtils.listFiles(basePath, null, true);

或者,使用 FileUtils.listFiles 的其他替代方法,您可以提供更详细的搜索参数。

如果您想同时查找文件和目录而不是仅查找文件,请使用

 FileUtils.listFilesAndDirs(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)

有关详细信息,请参阅 here

  • dirFilter 参数设置搜索将递归的目录。要递归所有子目录,请使用 TrueFileFilter.INSTANCE。要根本不递归,只需基础 null.

  • fileFilter 参数选择要搜索的文件和目录 return。要 return 所有这些,请使用 TrueFileFilter.INSTANCE.

调用示例[​​=25=]

FileUtils.listFilesAndDirs(basePath, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE)