【问题标题】:How can we list all files and folders recursively?我们如何递归列出所有文件和文件夹?
【发布时间】:2015-07-04 11:56:35
【问题描述】:

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

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

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

附注:

一种原生方式是使用 JDK 原生支持的 File.listFiles(),已解决 here

【问题讨论】:

  • 你为什么要用 Commons IO 做这个?
  • 为了清楚起见,您是否要求提供递归列出文件的现有 API?
  • @Strikeskids 确实是为了简单的调用。我只想简短。
  • @Codebender 不使用现有 API - 已经提到作为使用 File.listFiles() 的本机方式

标签: java recursion apache-commons-io file-listing


【解决方案1】:

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

检索所有设置recursivetrueextensionsnull 的文件。

 FileUtils.listFiles(basePath, null, true);

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

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

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

更多详情请参阅here

  • dirFilter 参数设置搜索将在哪些目录上递归。要递归所有子目录,请使用TrueFileFilter.INSTANCE。要完全不递归,只需以 null 为基础。

  • fileFilter 参数选择搜索将返回的文件和目录。要全部退回,请使用TrueFileFilter.INSTANCE

示例调用

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

【讨论】:

  • 在扩展数组中放入什么来获取所有文件/文件夹@Strikeskids?
  • extentions 设置为 null
  • 我试过null,但仍然只列出了文件——而不是文件夹/包含文件夹本身:(
  • 哦,你会想要使用 listFilesAndDirs 那么......我会更新我的答案
  • 我提供的代码行列出了我的文件: 给定这个目录. ./a ./b ./b/d ./c 提供的代码列出了文件[/tmp/testdir, /tmp/testdir/a, /tmp/testdir/b, /tmp/testdir/b/d, /tmp/testdir/c] 请注意,空文件夹 a 出现在输出中。你能举个例子说明这怎么行吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 2021-03-21
  • 2019-12-29
  • 2010-10-19
相关资源
最近更新 更多