Конвертировать Files.walk в SimplefileVisitor

Скажи, что у меня есть такая вещь

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

Что я тогда через поток и собирать

но затем я хочу преобразовать его для использования SimpleFileVisitor, потому что это необходимо, как я буду делать? Я гуглил и пытался часами, ничего не получая. Можете ли вы даже использовать Stream с SimpleFileVisitor? или мне нужно повторить метод во всем? Как я понимаю, мне нужно несколько методов, чтобы использовать SimpleFileVisitor, и я чувствую растерянность по этому поводу. Files.walk были очень просты, но это не работает для моих намерений.

1 ответ

Решение

Подход 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 здесь, как ваше объяснение:

потому что это необходимо

довольно таинственно;)

Другие вопросы по тегам