这个问题已经在这里有一个答案:
鉴于一个Java“文件”的对象,我怎么能检测是否它是指一个符号链接?
(如果它有助于/事宜,我知道文件是指一个目录,而不是一个文件)
你也可以使用isSymbolicLink(Path path)方法。它会更可靠。
java.io.File file = ...;
boolean isSymbolicLink = Files.isSymbolicLink(file.toPath());
从Java文档“Detecting a Symbolic Link”类似的例子。
File.getCanonicalPath()
解析符号链接
一个规范路径名是绝对和唯一的。正则形式的精确定义是依赖于系统的。该方法首先此路径名转换为绝对形式如果必要的话,就好象通过调用getAbsolutePath()方法,然后将其映射到其独特的形式在一个系统相关的方式。这通常涉及删除冗余的名称,如“”。和“..”从路径,解析符号链接(在UNIX平台),以及将驱动器号标准的情况下(在Microsoft Windows平台)。
我想你可以比较getCanonicalPath()
和getAbsolutePath()
的结果。
更新:看来这个问题已经被问 - 检查the answers there