java File 判断文件是否为符号链接

转自:http://blog.csdn.net/a1129963143/article/details/9255449

最简单的方式,直接使用:

[java]  view plain copy
  1. private static boolean isSymbolicLink(File f) throws IOException {  
  2.     return !f.getAbsolutePath().equals(f.getCanonicalPath());  
  3. }  

如果是普通文件,file.getAbsolutePath()和file.getCanonicalPath()是一样的。

如果是link文件,file.getAbsolutePath()是链接文件的路径;file.getCanonicalPath是实际文件的路径(所指向的文件路径)。


apache 使用的判断方式:

The technique used in Apache Commons uses the canonical path to the parent directory, not the file itself. I don't think that you can guarantee that a mismatch is due to a symbolic link, but it's a good indication that the file needs special treatment.

[java]  view plain copy
  1. public static boolean isSymlink(File file) throws IOException {  
  2.   if (file == null)  
  3.     throw new NullPointerException("File must not be null");  
  4.   File canon;  
  5.   if (file.getParent() == null) {  
  6.     canon = file;  
  7.   } else {  
  8.     File canonDir = file.getParentFile().getCanonicalFile();  
  9.     canon = new File(canonDir, file.getName());  
  10.   }  
  11.   return !canon.getCanonicalFile().equals(canon.getAbsoluteFile());  
  12. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值