繁体   English   中英

Windows中的Java和符号链接

[英]Java & symbolic links in windows

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

这是我创建链接的方式:

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

谁能告诉我为什么属性报告文件不是符号链接? 我错过了什么吗? 这也发生在unix上吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM