Java 1.6 - 确定符号链接在DirectoryWalker类中,我想知道File实例是否实际上是指向目录的符号链接(假设,walker在UNIX系统上行走)。鉴于,我已经知道实例是一个目录,以下是确定符号链接的可靠条件吗?File file;// ... if (file.getAbsolutePath().equals(file.getCanonicalPath())) { // real directory ---> do normal stuff }else { // possible symbolic link ---> do link stuff}
3 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
Apache Commons中使用的技术使用父目录的规范路径,而不是文件本身。我不认为您可以保证不匹配是由于符号链接,但它是一个很好的迹象表明该文件需要特殊处理。
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());}
饮歌长啸
TA贡献1951条经验 获得超3个赞
另外,请注意file.isFile()
并file.isDirectory()
根据已解析的文件返回结果,因此两者都返回false
时file
指的是目标不存在的符号链接。
(我知道这本身并不是一个有用的答案,但它让我绊倒了几次,所以我认为我应该分享)
添加回答
举报
0/150
提交
取消