Java 关于删除带有文件的符号链接的查询。walkFileTree

Java 关于删除带有文件的符号链接的查询。walkFileTree,java,recursion,io,Java,Recursion,Io,从本java教程中: 删除文件或目录 您可以删除文件、目录或链接。通过符号链接 链接被删除,而不是链接的目标。在目录中 目录必须为空,否则删除失败 另一方面,来自: 您需要决定是否要遵循符号链接。如果 例如,您正在删除文件,下面的符号链接可能会 这是不可取的。如果要复制文件树,可能需要 允许吧。默认情况下,walkFileTree不跟随符号链接 他们说,在第二个引号中,如果您正在删除文件,例如,下面的符号链接可能不可取,但在第一个引号中明确指出:您可以删除文件、目录或链接。使用符号链接时,链接将

从本java教程中:

删除文件或目录

您可以删除文件、目录或链接。通过符号链接 链接被删除,而不是链接的目标。在目录中 目录必须为空,否则删除失败

另一方面,来自:

您需要决定是否要遵循符号链接。如果 例如,您正在删除文件,下面的符号链接可能会 这是不可取的。如果要复制文件树,可能需要 允许吧。默认情况下,walkFileTree不跟随符号链接

他们说,在第二个引号中,
如果您正在删除文件,例如,下面的符号链接可能不可取
,但在第一个引号中明确指出:
您可以删除文件、目录或链接。使用符号链接时,链接将被删除,而不是链接的目标。

如果只删除链接而不删除目标,为什么不建议在使用
文件时删除以下链接。walkFileTree


提前感谢。

符号链接的问题是您不知道它将发送到哪里。因此,如果您递归删除
/etc/home/Rollerball/opt
,可能您忘记了有一个指向
/bin
的链接,您忘了考虑它。

好,但是Files.delete(path)只删除链接,而不删除目标。。只有当传递给visitFile的“路径”已经是解析到目标的链接时,您所说的才有意义。是这样吗?如果是,我在哪里可以找到一些提到它的文档?不,问题不在于删除
/etc/home/Rollerball/opt/link2bin
。问题是,如果您正在递归删除并遵循链接,您将开始遍历
/bin
并删除那里的文件。删除后,您将删除该链接(首先删除目录中包含的文件,然后删除目录本身)。感谢现在更清晰,因此在开始删除文件之前,只要文件夹中有链接,如果启用了FOLLOW_links,它将首先跟踪所有链接,对吗?