Java 从大目录读取文件
Java Read files from big directory
我有一个包含 100 万个文本文件的目录。我想列出所有文件名。我尝试使用 File.listFiles() 并将文件名打印到控制台。但是在开始打印第一个文件名之前花了很长时间。有没有更快的方法来列出这些文件名?
由于 listFiles()
将结果加载到您的内存中,因此无法使用此方法加速该过程。
但是您可以使用Java的DirectoryStream
将内容预加载到内存中并加载每个文件名。看到这个
Path folder = Paths.get("...");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(folder)) {
for (Path entry : stream) {
// Process the entry
}
} catch (IOException ex) {
// An I/O problem has occurred
}
我有一个包含 100 万个文本文件的目录。我想列出所有文件名。我尝试使用 File.listFiles() 并将文件名打印到控制台。但是在开始打印第一个文件名之前花了很长时间。有没有更快的方法来列出这些文件名?
由于 listFiles()
将结果加载到您的内存中,因此无法使用此方法加速该过程。
但是您可以使用Java的DirectoryStream
将内容预加载到内存中并加载每个文件名。看到这个
Path folder = Paths.get("...");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(folder)) {
for (Path entry : stream) {
// Process the entry
}
} catch (IOException ex) {
// An I/O problem has occurred
}