1
我有一个网络驱动器上有一百万个文件的目录。如果我尝试用如何在Java中迭代读取目录中的所有文件?
folder.listFiles()
读它,它会占用大量的时间,直到生成的数组将填充文件。
我想通过一个接收文件并打印输出进度。
我该如何在Java中做到这一点?
我有一个网络驱动器上有一百万个文件的目录。如果我尝试用如何在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) {}
HTTP://docs.oracl e.com/javase/7/docs/api/java/nio/file/DirectoryStream.html – Aubin