如何使用Java 8探索所有子目录?

时间:2015-10-04 10:14:08

标签: java-8 subdirectory

我希望得到所有目录&子目录从当前的一个开始。

我找到了一种方法来实现flatMap()。但它有一个深层次:

    List<File> files =
            Stream.of(new File(".").listFiles())
                    .flatMap(file -> file.listFiles() == null ?
                            Stream.of(file) : Stream.of(file.listFiles()))
                    .collect(toList());
    System.out.println("Count: " + files.size());
    files.forEach(path -> System.out.println("Path: " + path));

如果我有下一个项目的打击:

enter image description here

它只会显示:

  

路径:./ test / next1

如何使用Java 1.8完整和深入实现此目的

  

路径:./ test / next1 /next2 /next3

1 个答案:

答案 0 :(得分:4)

使用Files.walk

caz

请注意,此解决方案存在一个问题:如果在遍历期间遇到任何异常(例如,拒绝访问某些嵌套文件夹),它将立即失败并出现异常,并且没有简单的方法可以恢复行走。例如,检查this question。如果在您的情况下不需要在异常后恢复,则此解决方案将正常工作。