首頁 >Java >java教程 >如何使用 Java 8 的 `Files.walk` 和 `Files.find` 遞歸列出 Java 中的檔案?

如何使用 Java 8 的 `Files.walk` 和 `Files.find` 遞歸列出 Java 中的檔案?

Susan Sarandon
Susan Sarandon原創
2025-01-03 06:44:39813瀏覽

How to Recursively List Files in Java Using Java 8's `Files.walk` and `Files.find`?

如何使用Java 8 在Java 中遞歸列出檔案

簡介

遞歸文件清單是一項常見任務,涉及遍歷目錄和子目錄以檢索指定路徑內所有檔案的清單。在 Java 中,有多種方法可以使用內建程式庫和第三方程式庫來實現此目的。

Java 8(使用Files.walk)

Java 8 引入一種透過Files.walk 方法處理檔案的強大方法,該方法提供表示目錄樹中所有文件的Path 物件流。要列出目錄下的所有常規文件,可以使用以下程式碼:

try (Stream<Path> stream = Files.walk(Paths.get(path))) {
    stream.filter(Files::isRegularFile)
          .forEach(System.out::println);
}

這種方法提供了一種方便而直接的方式來遍歷文件樹並對單一文件執行操作,例如列印其名稱或執行其他處理。

Java 8(使用 Files.find)

Java 8 也引入了 Files.find 方法,該方法允許您基於過濾謂詞搜尋檔案。對於遞歸文件列表,您可以使用過濾器來檢查常規文件:

Files.find(Paths.get(path),
           Integer.MAX_VALUE,
           (filePath, fileAttr) -> fileAttr.isRegularFile())
        .forEach(System.out::println);

如果您需要根據文件屬性進行過濾,Files.find 可能會更有效,但性能並不顯著簡單列出常規檔案時Files.walk 和Files.find 的差異。

與其他比較方法

Java 8 基於流的方法比傳統的遞歸或 hacky 實現具有顯著的優勢。它們提供了一種簡潔而富有表現力的方式來處理遞歸文件列表,使您的程式碼更容易閱讀、維護和擴展。

以上是如何使用 Java 8 的 `Files.walk` 和 `Files.find` 遞歸列出 Java 中的檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn