Windows 中的 Java 和符号链接(symbolic link)

标签 java windows

我一直在玩 java.nio.file.Files 并且偶然发现了一个奇怪的问题。我有一个符号链接(symbolic link),但是 Files.isSymbolicLink()Files.readAttributes() 的符号链接(symbolic link)属性显示不同的结果。

这是我创建链接的方式:

D:\DEV\test>mklink /D link1 components
symbolic link created for link1 <<===>> components

相关java代码:

Path symLinkDirectory = Paths.get("D:\\DEV\\test\\link1");
DosFileAttributes dosFileAttributes = Files.readAttributes(symLinkDirectory, DosFileAttributes.class);

System.out.println(String.format(
        "Files.isSymbolicLink(): %b, dosFileAttributes.isSymbolicLink(): %b", 
        Files.isSymbolicLink(symLinkDirectory), dosFileAttributes.isSymbolicLink()));

给我这个输出:

Files.isSymbolicLink(): true, dosFileAttributes.isSymbolicLink(): false

谁能告诉我为什么属性报告文件不是符号链接(symbolic link)?我错过了什么吗? Unix 上也会发生这种情况吗?

最佳答案

您需要将 LinkOption.NOFOLLOW_LINKS 添加到 readAttributes 的调用中以获取链接本身的属性,而不是链接目标。

DosFileAttributes dosFileAttributes = Files.readAttributes(symLinkDirectory,
                        DosFileAttributes.class, LinkOption.NOFOLLOW_LINKS);

关于Windows 中的 Java 和符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024848/

相关文章:

javascript - 从网络浏览器启动本地可执行文件

c# - 什么是 WPF,它与 WinForms 相比如何?

java - 使用类似的界面对列表进行排序

java - 我必须使用按钮将特定行从 mysql 添加到 JTable

java - 如何使用servlet运行.exe文件

Windows C++ 和微秒 sleep 的可能性

c++ - Windows SetThreadAffinityMask 无效

java - 我的应用程序的调试构建工作正常但不是发布构建签名版本

java - 创建自定义标签 在输入字段为空时使用

windows - 程序化 Windows 用户配置文件创建