Я пытаюсь использовать следующий код:
Files.walk(Paths.get("/home"), FileVisitOption.FOLLOW_LINKS)
.map(p -> p.getFileName())
.map(f -> f.toString())
.filter(s -> s.endsWith(".rb"))
.forEach(o -> System.out.println(o));
Когда я запускаю его как обычного пользователя, я получил AccessDeniedException, завернутый в UncheckIOException.. И когда вы запустили с правами root, я получил правильный результат.
$ java helloJava8.LambdaExpr
Exception in thread "main" java.io.UncheckedIOException: java.nio.file.AccessDeniedException: /home/lost+found
at java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.java:88)
at java.nio.file.FileTreeIterator.hasNext(FileTreeIterator.java:104)
at java.util.Iterator.forEachRemaining(Iterator.java:115)
at .......
$sudo java helloJava8.LambdaExpr
hello.rb
Я знаю причину проблемы, но то, что я хочу знать, как усвоить это исключение, потому что, если я завершаю вышеуказанный код в блоке Try-Catch
, я получил метод walk
закончить его работу и остановить ходьбу, хотя fs.