我有一个包含100万个文本文件的目录。我想列出所有文件名。我尝试使用File.listFiles()并将文件名打印到控制台。但是在开始打印第一个文件名之前花了很长时间。有没有更快的方法来列出这些文件名?
答案 0 :(得分:2)
由于listFiles()
会将结果加载到您的记忆中,因此无法通过此方法加速该过程。
但您可以使用Java的DirectoryStream
将内容预加载到内存中并加载每个文件名。见link
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
}