我希望得到所有目录&子目录从当前的一个开始。
我找到了一种方法来实现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));
如果我有下一个项目的打击:
它只会显示:
路径:./ test / next1
如何使用Java 1.8完整和深入实现此目的
路径:./ test / next1 /next2 /next3
答案 0 :(得分:4)
使用Files.walk
:
caz
请注意,此解决方案存在一个问题:如果在遍历期间遇到任何异常(例如,拒绝访问某些嵌套文件夹),它将立即失败并出现异常,并且没有简单的方法可以恢复行走。例如,检查this question。如果在您的情况下不需要在异常后恢复,则此解决方案将正常工作。