在 Java 中检测符号链接

2022-09-02 00:19:17

给定一个Java'File'对象,我如何检测它是否引用了符号链接?

(如果它有帮助/重要,我知道文件指的是一个目录,而不是一个文件)


答案 1

File.getCanonicalPath() 解析符号链接

规范路径名既绝对又是唯一的。规范形式的精确定义是依赖于系统的。如有必要,此方法首先将此路径名转换为绝对形式,就像调用 getAbsolutePath() 方法一样,然后以依赖于系统的方式将其映射到其唯一形式。这通常涉及从路径名中删除冗余名称(如“.”和“..”),解析符号链接(在 UNIX 平台上),以及将驱动器号转换为标准大小写(在 Microsoft Windows 平台上)。

我假设您可以比较 和 的结果。getCanonicalPath()getAbsolutePath()

更新:似乎这个问题已经被问过了 - 检查那里的答案


答案 2

您也可以使用 isSymbolicLink(Path path) 方法。它会更可靠。

java.io.File file = ...;
boolean isSymbolicLink = Files.isSymbolicLink(file.toPath());

Java Doc“检测符号链接”中的类似示例。


推荐