我试图在JDK 7 (java.nio.file)中使用FileWalkTree()方法。为了实现我自己的CustomFileVIsitor,我通过扩展SimpleFileVisitor.创建了一个FileVisitor类
在这个CustomFileVIsitor班..。我正在重写函数visitFile。
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()生成的输出是不同的
输出如下所示:
Checking Symbolic Link true
Checking Symbolic Link false
File Size 38
File Size 38为什么会这样呢?这是一个错误,还是我在解释信息时遗漏了什么?
发布于 2011-11-08 19:34:38
我猜您是通过一个类似于
FileAttributes attrs = Files.readAttributes(path, FileAttributes.class);如果是这样,您可能需要通过传入适当的LinkOption枚举来防止符号链接的解析,如下所示
FileAttributes attrs = Files.readAttributes(path, FileAttributes.class, NOFOLLOW_LINKS);您很可能已经解决了获取FileAttributes的链接,这将解释为什么File报告它是一个符号链接,而FileAttributes报告它不是一个符号链接。
https://stackoverflow.com/questions/8055352
复制相似问题