本文介绍了如何扫描Java中的文件夹?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在Java中递归地列出文件夹中的所有文件?
How can I get list all the files within a folder recursively in Java?
推荐答案
不知道你想如何表示树?无论如何,这里是一个使用递归扫描整个子树的示例。文件和目录都是一样的。请注意,每次提供一个结果 - 调用者不必等待所有I / O操作在执行之前完成。这允许增量GUI更新,提前取消等。
Java 7 offers a couple of improvements. For example, DirectoryStream provides one result at a time - the caller no longer has to wait for all I/O operations to complete before acting. This allows incremental GUI updates, early cancellation, etc.
static void addTree(Path directory, Collection<Path> all)
throws IOException {
try (DirectoryStream<Path> ds = Files.newDirectoryStream(directory)) {
for (Path child : ds) {
all.add(child);
if (Files.isDirectory(child)) {
addTree(child, all);
}
}
}
}
注意可怕的null返回值已被IOException替代。
Note that the dreaded null return value has been replaced by IOException.
Java 7还提供了一个:
Java 7 also offers a tree walker:
static void addTree(Path directory, final Collection<Path> all)
throws IOException {
Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
all.add(file);
return FileVisitResult.CONTINUE;
}
});
}
这篇关于如何扫描Java中的文件夹?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!