我们如何递归列出所有文件和文件夹?
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)
通过 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)