在 Java 中检测符号链接
2022-09-02 00:19:17
给定一个Java'File'对象,我如何检测它是否引用了符号链接?
(如果它有帮助/重要,我知道文件指的是一个目录,而不是一个文件)
给定一个Java'File'对象,我如何检测它是否引用了符号链接?
(如果它有帮助/重要,我知道文件指的是一个目录,而不是一个文件)
File.getCanonicalPath()
解析符号链接
规范路径名既绝对又是唯一的。规范形式的精确定义是依赖于系统的。如有必要,此方法首先将此路径名转换为绝对形式,就像调用 getAbsolutePath() 方法一样,然后以依赖于系统的方式将其映射到其唯一形式。这通常涉及从路径名中删除冗余名称(如“.”和“..”),解析符号链接(在 UNIX 平台上),以及将驱动器号转换为标准大小写(在 Microsoft Windows 平台上)。
我假设您可以比较 和 的结果。getCanonicalPath()
getAbsolutePath()
更新:似乎这个问题已经被问过了 - 检查那里的答案
您也可以使用 isSymbolicLink(Path path) 方法。它会更可靠。
java.io.File file = ...;
boolean isSymbolicLink = Files.isSymbolicLink(file.toPath());
Java Doc“检测符号链接”中的类似示例。