我在网络驱动器上有一个包含数百万个文件的目录。如果我尝试用
来阅读它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}");
关于java - Java中如何迭代读取目录中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42724032/