递归流
2022-09-02 10:09:47
我想使用Java 8以递归方式列出计算机上的所有文件。
Java 8 提供了一个返回所有文件和目录但不返回递归的方法。如何使用它来获取完整的递归文件列表(不使用变异集合)?listFiles
我已经尝试了下面的代码,但它只有一个层次的深度:
static Function<Path, Stream<Path>> listFiles = p -> {
if (p.toFile().isDirectory()) {
try { return Files.list(p); }
catch (Exception e) { return Stream.empty(); }
} else {
return Stream.of(p);
}
};
public static void main(String[] args) throws IOException {
Path root = Paths.get("C:/temp/");
Files.list(root).flatMap(listFiles).forEach(System.out::println);
}
而且使用不编译(不知道为什么)...return Files.list(p).flatMap(listFiles);
注意:我对涉及文件访问器或外部库的解决方案不感兴趣。