在Java中检测符号链接

Mat*_*ard 19 java unix filesystems symlink

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

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

Boz*_*zho 33

File.getCanonicalPath() 解析符号链接

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

我想你可以比较的结果getCanonicalPath()getAbsolutePath().

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


小智 21

您还可以使用isSymbolicLink(路径路径)方法.它会更可靠.

java.io.File file = ...;
boolean isSymbolicLink = Files.isSymbolicLink(file.toPath());
Run Code Online (Sandbox Code Playgroud)

来自Java Doc' 检测符号链接 '的类似示例.

  • 仅限Java 7. (5认同)