如何扫描Java中的文件夹

如何扫描Java中的文件夹

本文介绍了如何扫描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中的文件夹?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 19:17