gpt4 book ai didi

java - 迭代目录中的大量文件

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:23 25 4
gpt4 key购买 nike

我有一个包含 100,000 个文件的目录,我需要遍历所有文件以读取一个值。现在我使用 listFiles() 加载数组中的所有文件,然后一个一个地迭代。但是有没有一种内存高效的方法可以在不加载数组的情况下执行此操作?

File[] tFiles = new File(Dir).listFiles();

try {
for (final File tFile : tFiles) {
//Process files one by one
}
}

最佳答案

从 Java 7 开始,您可以使用文件访问者模式递归访问目录的内容。

FileVisitor 接口(interface)的文档是 here .

这允许您在不创建大量 File 对象的情况下遍历文件。

打印文件名的简单示例:

Path start = Paths.get(new URI("file:///my/folder/"));

Files.walkFileTree(start, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException
{
System.out.println(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException e)
throws IOException
{
if (e == null) {
System.out.println(dir);
return FileVisitResult.CONTINUE;
}
else {
// directory iteration failed
throw e;
}
}
});

关于java - 迭代目录中的大量文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com