SimpleFileVisitor 方法:
为了使用 SimpleFileVisitor,您可以通过walkFileTree
以下方式使用:
try {
Files.walkFileTree(Paths.get("somePath"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("visitFile: " + file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException ex) throws IOException {
System.out.println("visitFileFailed: " + file + " because of " + ex);
return FileVisitResult.CONTINUE;
}
// etc... you can add postVisit...
});
} catch (IOException e) {
...
}
这使您可以在访问每个文件时执行操作,但它与流无关(好吧,流是您应该在适合您的需要时使用的工具,不方便时不要强迫自己使用它)
流方法:
如果您更喜欢步行和流媒体,您可以执行以下操作:
Stream<Path> files = Files.walk(Paths.get("somePath")).forEach(path -> doSomethingWithPath(path));
不知道为什么在这里需要 SimpleFileVisitor,作为您的解释:
因为需要
很神秘;)