6

我在我的代码中使用 Google Guava。从一个目录开始,我想逐个获取所有文件(如果当前文件是一些特殊文件,我将在其中执行一些处理),最后我会将它们复制到另一个目录(某些目录除外。)

我知道 Guava 有一种复制方法,但是如何获取目录下的所有文件(如果起始目录下有一些目录,我也应该在它下面获取文件,如果其中一些目录下有任何目录我应该也得到它们)

PS 1:如果对复制文件有任何建议,欢迎您。

PS 2:我认为这次对话与我的问题有关:http ://code.google.com/p/guava-libraries/issues/detail?id=578

PS 3:我在我的项目中使用 Java 6。

4

3 回答 3

14

从 Guava 15 开始,您可以使用Files.fileTreeTraverser().

用法很简单:

File rootDir = ...; //this is your root directory
for (File f : Files.fileTreeTraverser().preOrderTraversal(rootDir)) {
    // do whatever you need with the file/directory

    // if you need the relative path, with respect to rootDir
    Path relativePath = rootDir.toPath().getParent().relativize(f.toPath());
}

正如您从TreeTraverser的 javadoc中所读到的,您可以在三种不同的迭代顺序之间进行选择。

于 2014-04-07T08:08:27.337 回答
2

如果您有权访问 Java 7,请使用walkFileTree.Files

于 2013-02-14T20:16:53.827 回答
0
  • 通过 Guava 复制文件

    在 Guava 14.0 中可以找到一些Files.copy重载方法,用于单文件复制。

  • 行走文件

    正如一些人建议的那样,您可以使用递归调用。(DirectoryScanner你说的很好)

于 2013-02-15T01:47:49.347 回答