java - Java中如何迭代读取目录中的所有文件?

标签 java file nio

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

来阅读它
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/

相关文章:

java - Camel 和 Google App Engine 没有 Spring?

ruby-on-rails - Paperclip 不支持 .doc 文件

c# - 如何从 C# 应用程序输出资源文件?

java.nio 与每个套接字的新线程

java - 如何避免制作 ByteBuffer 的防御性副本?

java - war 部署成功后tomcat给出404

java - 只需使用 FK 列而不是相关实体的 ID 即可消除 JPA 查询中的额外联接

java - 通过 id 而不是对象添加与实体的关系

java - 如果我使用 Java 将所有可能的 64 位 double 值存储在文件中,文件大小是多少?

java - 如何使用Java代码将图像权限模式更改为777?