簡體   English   中英

如何在Java中迭代讀取目錄中的所有文件?

[英]How to read all files in directory iteratively in Java?

我在網絡驅動器上有一個包含數百萬個文件的目錄。 如果我嘗試閱讀

folder.listFiles()

在結果數組中充滿文件之前,將花費大量時間。

我希望一個人接收文件並打印進度。

如何用Java做到這一點?

您可以嘗試使用DirectoryStream

Path dir = Paths.get("C:\\"); // directory to list

try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
    for (Path entry: stream) {
        System.out.println(entry);
    }
} catch (DirectoryIteratorException ex) {
    ex.printStackTrace();
} catch (IOException ex) {
    ex.printStackTrace();
}

如果需要,還可以為DirectoryStream篩選文件:您需要做的就是向Files.newDirectoryStream調用添加一個參數:

DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{txt,png,jpg}");

您可以使用NIO.2 API:

try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(Paths.get("/path/to/directory"))) {
    for (Path path : directoryStream) {
        System.out.println(path.toString());
    }
} catch (IOException ex) {}

暫無
暫無

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

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