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

时间:2017-03-10 17:11:42

标签: java file nio

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

阅读它
folder.listFiles()

这将花费很多时间,直到生成的数组将填充文件。

我希望通过一个文件接收文件并打印出进度。

我怎样才能用Java做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以尝试使用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}");

答案 1 :(得分:0)

您可以使用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) {}