gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:22 26 4
gpt4 key购买 nike

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

在这个 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
}

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

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

输出看起来像这样:

            Checking Symbolic Link  true
Checking Symbolic Link false
File Size 38
File Size 38

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

最佳答案

我猜您正在通过类似于

的调用获取文件属性
FileAttributes attrs = Files.readAttributes(path, FileAttributes.class);

如果是这样,您可能需要通过传入适当的 LinkOption 枚举来阻止符号链接(symbolic link)的解析,就像这样

FileAttributes attrs = Files.readAttributes(path, FileAttributes.class, NOFOLLOW_LINKS);

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

关于java - JDK 7 java.nio.file isSymbolicLink() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8055352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com