new File(path_to_softlink).getCanonicalPath()
不会返回软链接指向的位置,但path_to_softlink
。 http://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上的符号链接一起使用吗?
答案 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