【问题标题】:Java & symbolic links in windowsWindows 中的 Java 和符号链接
【发布时间】:2013-11-16 22:41:20
【问题描述】:

我一直在玩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 上吗?

【问题讨论】:

    标签: java windows


    【解决方案1】:

    你需要在调用readAttributes的时候加上LinkOption.NOFOLLOW_LINKS来获取链接本身的属性,而不是链接目标。

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

    【讨论】:

    • 谢谢,我完全错过了这个选项。
    猜你喜欢
    • 1970-01-01
    • 2011-08-20
    • 2010-11-29
    • 2014-11-22
    • 1970-01-01
    • 2012-04-28
    • 2011-03-23
    • 2020-11-10
    • 1970-01-01
    相关资源
    最近更新 更多