首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Files.walk转换为SimplefileVisitor

将Files.walk转换为SimplefileVisitor
EN

Stack Overflow用户
提问于 2018-03-15 15:07:43
回答 1查看 101关注 0票数 0

说我有这样一件事

代码语言:javascript
复制
Stream<Path> files = Files.walk(Paths.get(somePath))

然后我流经并收集

但是我想把它转换成使用SimpleFileVisitor,因为它是需要的,我会怎么做呢?我搜索并尝试了几个小时,却没有得到任何结果。您甚至可以在SimpleFileVisitor中使用流吗?还是我需要重新做一遍这个方法?据我所知,我需要几种方法来使用SimpleFileVisitor,我对此感到困惑。Files.walk很简单,但它对我的意图不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 18:55:35

SimpleFileVisitor方法:

为了使用SimpleFileVisitor,可以通过以下方式使用walkFileTree

代码语言:javascript
复制
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) {
      ...
}

这使您可以在访问每个文件时执行操作,但它与流无关(好流是一种工具,当它适合您的需要时,不要强迫自己在不方便的时候使用它)。

流方法:

如果您喜欢步行和流,您可以执行以下操作:

代码语言:javascript
复制
Stream<Path> files = Files.walk(Paths.get("somePath")).forEach(path -> doSomethingWithPath(path));

不知道为什么要在这里使用SimpleFileVisitor,作为您的解释:

因为它是需要的

相当神秘;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49302966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档