gpt4 book ai didi

java - Java 中的 listFiles() 无法获取所有文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:24 27 4
gpt4 key购买 nike

我写了这个函数,它看起来不错,但是如果当前目录中有多个文件夹并且没有文件,它就会失败。它只进入第一个文件夹并在那里工作并忽略其他文件夹。我该如何修复这个错误?

public static void getAllFiles(File folder, List<File> result) {
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
result.add(listOfFiles[i]);
}
if (listOfFiles[i].isDirectory()) {
getAllFiles(listOfFiles[i], result);
}
}
}

最佳答案

也许你应该试试 NIO.2 中的 walkFileTree 方法:

public List<Path> findAllFilesInDirectory(Path pathToDir) throws IOException {
final List<Path> pathsToFiles = new ArrayList<>();

Files.walkFileTree(pathToDir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (Files.isRegularFile(file)) {
pathsToFiles.add(file);
}
return FileVisitResult.CONTINUE;
}
});

return pathsToFiles;
}

要使用 NIO.2,您必须至少拥有 Java 1.7 版本。

文档:

http://docs.oracle.com/javase/tutorial/essential/io/walk.html

教程:

http://www.javabeat.net/visiting-all-the-files-and-directories-for-a-directory-in-java-using-nio2/

http://www.srccodes.com/p/article/20/java-file-and-directory-operations-made-easy-in-jdk7

关于java - Java 中的 listFiles() 无法获取所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28580764/

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