gpt4 book ai didi

java - 将 Files.walk 转换为 SimplefileVisitor

转载 作者:行者123 更新时间:2023-12-02 02:15:59 25 4
gpt4 key购买 nike

说我有这样的事情

Stream<Path> files = Files.walk(Paths.get(somePath))

然后我流过并收集

但后来我想将其转换为使用 SimpleFileVisitor,因为需要它,我该怎么办?我已经用谷歌搜索并尝试了几个小时但没有得到任何结果。您甚至可以将 Stream 与 SimpleFileVisitor 一起使用吗?或者我需要重做该方法吗?据我了解,我需要几种方法来使用 SimpleFileVisitor,但我对此感到困惑。 Files.walk 非常简单,但它不符合我的意图。

最佳答案

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 这里,作为你的解释:

because it is needed

非常神秘;)

关于java - 将 Files.walk 转换为 SimplefileVisitor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49302966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com