使用 Java 遞歸枚舉檔案
探索遞歸列出指定目錄下檔案的選項,我們發現了各種方法。雖然存在「hacky」實現,但 Java 框架本身提供了強大的實用程式來簡化此任務。
Java 8 的簡化方法
Java 8 引入了一種方便的基於流的解決方案:
try (Stream<Path> stream = Files.walk(Paths.get(path))) { stream.filter(Files::isRegularFile) .forEach(System.out::println); }
這種方法提供了一種優雅的方式來遍歷文件並支援一系列流操作,例如過濾、
Files.find:根據檔案屬性過濾
Java 也提供了Files.find,它接受雙謂詞來根據屬性過濾檔案:
Files.find(Paths.get(path), Integer.MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile()) .forEach(System.out::println);
雖然Files.find 在過濾屬性時可以提供特定的最佳化,但其效能通常與Files.walk。
效能比較
在評估這些方法時,我們建議根據您的使用場景考慮特定的效能影響。如需更詳細的見解,請參閱答案更新中的 GitHub 項目,其中提供了結果和測試案例。
以上是Java如何高效遞歸枚舉文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!