首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDK 7 java.nio.file isSymbolicLink()行为

JDK 7 java.nio.file isSymbolicLink()行为
EN

Stack Overflow用户
提问于 2011-11-08 18:29:39
回答 1查看 1.7K关注 0票数 3

我试图在JDK 7 (java.nio.file)中使用FileWalkTree()方法。为了实现我自己的CustomFileVIsitor,我通过扩展SimpleFileVisitor.创建了一个FileVisitor类

在这个CustomFileVIsitor班..。我正在重写函数visitFile

代码语言:javascript
复制
             public FileVisitResult visitFile(Path file, BasicFileAttributes fileStats)
        throws IOException {
                              System.out.println("\t\tChecking Symbolic Link  " + Files.isSymbolicLink(file));
                      System.out.println("\t\tChecking Symbolic Link  " + fileStats.isSymbolicLink());
                         System.out.println("\t\tFile Size " + Files.size(file));
                     System.out.println("\t\tFile Size " + fileStats.size());
                             //Rest of the code
             } 

现在,为了测试这段代码,我创建了一个文件夹,然后向它添加了一个文件和一个符号链接(指向一个文件)。

当我使用FileWalkTree执行类时,符号链接的Files.isSymbolicLink(file)和fileStats.isSymbolicLink()生成的输出是不同的

输出如下所示:

代码语言:javascript
复制
            Checking Symbolic Link  true
            Checking Symbolic Link  false
            File Size 38
            File Size 38

为什么会这样呢?这是一个错误,还是我在解释信息时遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-08 19:34:38

我猜您是通过一个类似于

代码语言:javascript
复制
FileAttributes attrs = Files.readAttributes(path, FileAttributes.class);

如果是这样,您可能需要通过传入适当的LinkOption枚举来防止符号链接的解析,如下所示

代码语言:javascript
复制
FileAttributes attrs = Files.readAttributes(path, FileAttributes.class, NOFOLLOW_LINKS);

您很可能已经解决了获取FileAttributes的链接,这将解释为什么File报告它是一个符号链接,而FileAttributes报告它不是一个符号链接。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8055352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档