Apache使用这样的方式来判断:
public static boolean isSymlink(File file) throws IOException {
if (file == null)
throw new NullPointerException("File must not be null");
File canon;
if (file.getParent() == null) {
canon = file;
} else {
File canonDir = file.getParentFile().getCanonicalFile();
canon = new File(canonDir, file.getName());
}
return !canon.getCanonicalFile().equals(canon.getAbsoluteFile());
}
这种判断方式的依据就是,如果是链接文件(软连接、硬链接),那么getCanonicalFile和getAbsoluteFile的返回值是不一样的。否则一样。