通过使用Files.walkFileTree(Path, Set<FileVisitOption>, int, FileVisitor)
启用 FileVisitOption.FOLLOW_LINKS 的方法。我得到一个无限循环,符号链接重定向到父目录。这个java教程解释了一种如何检测导致问题的特定符号链接的方法,说明如下:
为文件调用 visitFile 方法。如果您已指定该
FOLLOW_LINKS
选项并且您的文件树具有到父目录的循环链接,则循环目录将在visitFileFailed
方法中报告为FileSystemLoopException
. 以下代码片段显示了如何捕获循环链接,来自 Copy 示例:
@Override
public FileVisitResult
visitFileFailed(Path file,
IOException exc) {
if (exc instanceof FileSystemLoopException) {
System.err.println("cycle detected: " + file);
} else {
System.err.format("Unable to copy:" + " %s: %s%n", file, exc);
}
return CONTINUE;
}
它有效,它检测到特定文件..但是无限循环仍然存在。我怎样才能继续跳过创建问题的符号链接,以便探索整个 FileTree 而不会陷入无限循环?