Java无法在Windows XP上正确处理软链接

时间:2015-08-17 13:55:20

标签: java windows

new File(path_to_softlink).getCanonicalPath()

不会返回软链接指向的位置,但path_to_softlinkhttp://schinagl.priv.at/nt/ln/ln.html#symboliclinksforwindowsxp

启用了对符号链接的支持
System.out.println(Files.readSymbolicLink(Paths.get(path).toRealPath()));

Exception in thread "main" java.lang.UnsupportedOperationException: symbolic links not supported
    at sun.nio.fs.WindowsFileSystemProvider.readSymbolicLink(WindowsFileSystemProvider.java:617)
    at java.nio.file.Files.readSymbolicLink(Files.java:1432)
    at file.CheckFreeSpace.main(CheckFreeSpace.java:18)



System.out.println(Files.isSymbolicLink(Paths.get(path).toRealPath()));

false

Java不能与XP上的符号链接一起使用吗?

1 个答案:

答案 0 :(得分:0)

也许是因为您尝试阅读链接目标Files.readSymbolicLink(Paths.get(path).toRealPath())中的链接。

以下代码适用于Windows 7计算机。

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

class SoftLinkDemo {

    public static void main(String[] args) throws Exception {
        Path softLink = Paths.get("d:/softLink");
        Path linkTarget = Paths.get("d:/linkTarget");
        Files.deleteIfExists(softLink);
        Files.deleteIfExists(linkTarget);
        Files.createFile(linkTarget);
        Files.createSymbolicLink(softLink, linkTarget);
        System.out.println("linkTarget: " + linkTarget);
        System.out.println("softLink  : " + softLink);
        System.out.println("Files.isSymbolicLink(softLink)  : " + Files.isSymbolicLink(softLink));
        System.out.println("softLink.toRealPath()           : " + softLink.toRealPath());
        System.out.println("Files.readSymbolicLink(softLink): " + Files.readSymbolicLink(softLink));
    }
}

输出

linkTarget: d:\linkTarget
softLink  : d:\softLink
Files.isSymbolicLink(softLink)  : true
softLink.toRealPath()           : D:\linkTarget
Files.readSymbolicLink(softLink): d:\linkTarget