我期待从java.nio.File
使用Java 8的Files#find方法获得以下代码的代码,以返回当前目录的所有子目录的计数:
public static void main(String[] args) throws IOException {
List<File> dirs = new LinkedList<File>();
Files.find(Paths.get("."),
Integer.MAX_VALUE,
(path, basicFileAttributes) -> dirs.add(path.toFile()));
System.out.println(dirs.size());
}
但是,它始终输出0。我的误解在哪里?
最佳答案
Files.find
返回流,您尚未消耗它,因此传递给文件添加到目录中的lambda未被执行。
应使用流,请尝试以下操作
`
public static void main(String[] args) throws IOException {
List<File> dirs = new LinkedList<File>();
Files.find(Paths.get("."),
Integer.MAX_VALUE,
(path, basicFileAttributes) ->
dirs.add(path.toFile())).forEach((ignore)->{});
java.lang.System.out.println( dirs.size() );
}