6

コードで Google Guava を使用しています。ディレクトリから始めて、すべてのファイルを 1 つずつ取得し (現在のファイルが特別なファイルである場合は、その中で何らかのプロセスを実行します)、最後にそれらを別のディレクトリにコピーします (一部のディレクトリを除く)。

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から読み取れるように、3 つの異なる反復順序から選択できます。

于 2014-04-07T08:08:27.337 に答える
2

Java 7にアクセスできる場合は、で使用walkFileTreeしてFilesください。

于 2013-02-14T20:16:53.827 に答える
0
于 2013-02-15T01:47:49.347 に答える