簡體   English   中英

Google Guava迭代從Begin目錄開始的所有文件

[英]Google Guava Iterate All Files Starting From a Begin Directory

我在我的代碼中使用Google Guava。 從一個目錄開始,我希望逐個獲取所有文件(如果當前文件是一些特殊文件,我將在其中進行一些處理),最后我將它們復制到另一個目錄(某些目錄除外)。

我知道在Guava有一個復制方法,但是如何在目錄下獲取所有文件(如果在起始目錄下有一些目錄,我應該在它下面獲取文件,如果在某些目錄下有任何目錄,我應該得到他們)

PS 1:如果有任何復制文件的建議,歡迎您。

PS 2:我認為此對話與我的問題有關: http//code.google.com/p/guava-libraries/issues/detail?id = 578

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

從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中讀取的TreeTraverser ,您可以在三種不同的迭代順序中進行選擇。

如果您可以訪問Java 7, walkFileTreeFiles使用walkFileTree

  • 由Guava復制文件

    一些Files.copy重載方法可以在Guava 14.0中找到,用於單個文件復制。

  • 走路文件

    正如一些人建議的那樣,你可以使用遞歸調用。 (你提到的DirectoryScanner很好)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM