Files.walk如何吞下异常并继续在文件系统中行走

时间:2014-04-22 13:07:01

标签: java nio java-8 java-stream

我尝试使用以下代码:

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));

当我以普通用户身份运行时,我在UncheckIOException中包含了AccessDeniedException。当以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。

0 个答案:

没有答案