[NIO.2] 第二十三篇 检验软链接

Path 对象可能表示文件或链接。如果 Path 对象指向软链接,可以调用 Files.isSymbolicLink() 方法来进行判断,这个方法接收一个 Path 类型的参数,并返回 boolean 值。下面的代码创建了一个名为 rafael.nadal.5 的软链接,并指向 C:\rafaelnadal\photos\rafa_winner.jpg 文件,随后校验了 Path 对象。


Path link = FileSystems.getDefault().getPath("rafael.nadal.5");
Path target = FileSystems.getDefault().getPath("C:/rafaelnadal/photos", "rafa_winner.jpg");
try {
Files.createSymbolicLink(link, target);
} catch (IOException | UnsupportedOperationException | SecurityException e) {

}

//check if a path is a symbolic link - solution 1
boolean link_isSymbolicLink_1 = Files.isSymbolicLink(link);
boolean target_isSymbolicLink_1 = Files.isSymbolicLink(target);

System.out.println(link.toString() + " is a symbolic link ? " + link_isSymbolicLink_1);
System.out.println(target.toString() + " is a symbolic link ? " + target_isSymbolicLink_1);


上面代码段的运行结果如下:

rafael.nadal.5 is a symbolic link ? true 
C:\rafaelnadal\photos\rafa_winner.jpg is a symbolic link ? false


也可以通过属性视图来进行检验,basic 视图中有 isSymbolicLink 属性,用来检验是否为软链接。可以使用 readAttributes() 方法来获取 isSymbolicLink 属性(在这里不推荐使用,因为这个方法会返回一组属性列表),更为简单的做法是调用 getAttribute() 方法,如下所示:


try {
boolean link_isSymbolicLink_2 = (boolean) Files.getAttribute(link,
"basic:isSymbolicLink");
boolean target_isSymbolicLink_2 = (boolean) Files.getAttribute(target,
"basic:isSymbolicLink");

System.out.println(link.toString() + " is a symbolic link ? " + link_isSymbolicLink_2);
System.out.println(target.toString() + " is a symbolic link ? "+ target_isSymbolicLink_2);
} catch (IOException | UnsupportedOperationException e) {
System.err.println(e);
}


运行后,输出结果为:

rafael.nadal.5 is a symbolic link ? true 
C:\rafaelnadal\photos\rafa_winner.jpg is a symbolic link ? false


文章来源:[url]http://www.aptusource.org/2014/04/nio-2-checking-a-symbolic-link/[/url]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值