Java NIO2 - 返回递归Collection <path> </path>

时间:2012-02-06 14:37:46

标签: java recursion java-7 java.nio.file

我正在研究Java7中的新功能。我希望在给定特定输入目录的情况下返回一个Collection对象。

目前我正在使用(org.apache.commons.io)

Collection<File> files = FileUtils.listFiles(myInputFile, ...);

相反,我想做类似的事情:

Collection<Path> paths = listPathsUsingJava7(myInputPath, ...);

但是,我在示例/文档中没有看到任何具体内容。我看到DirectoryStreams,似乎没有做递归。我还看到Vistors使你对当前对象采取行动,而不是将其添加到Collection。

有没有人有一个Java7示例,以正确的方式执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:2)

下一个JDK7代码会将文件夹和子文件夹中的所有文件添加到files

    final List<Path> files = new ArrayList<>();
    Files.walkFileTree(Paths.get(myInputPath), new SimpleFileVisitor<Path>() {

        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
            files.add(file);
            return FileVisitResult.CONTINUE;
        }
    });