【发布时间】:2021-07-03 21:04:58
【问题描述】:
这是我第一次在 Java 中使用 Files.walk,我很喜欢它,尤其是 Path 类。它功能强大且用途广泛。
然而,我不喜欢的是,在遍历文件夹时,如果迭代器遇到障碍......就像它遇到了用户无权查看的文件夹或它可能遇到的任何错误,在它抛出异常之后,它不会继续,也不会产生一个可以使用的路径列表。
这是我如何使用该方法的示例:
try {
Stream<Path> paths = Files.walk(rootPath);
List<Path> pathList = paths.collect(Collectors.toList());
for (Path path : pathList) {
//Processing code here
}
}
catch (FileSystemException a) {System.err.format("FileSystemException: %s%n", a);System.out.println(a.getStackTrace());}
catch (UncheckedIOException b) {System.err.format("UncheckedIOException: %s%n", b);System.out.println(b.getCause().getLocalizedMessage());}
catch (IOException c) { System.err.format("IOException: %s%n", c);System.out.println(c.getStackTrace());}
现在,如果 Files.walk 方法在尝试遍历文件夹时遇到某种错误,它会抛出异常,然后代码当然会在捕获异常后继续。
我想要它做的是忽略它遇到的任何问题,并继续迭代它可以不停止的任何文件夹。
这可能吗?
【问题讨论】: