我在网络驱动器上有一个包含数百万个文件的目录。如果我尝试阅读

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}");

09-11 18:58
查看更多