我在使用Java的时候遇到了创建符号链接到目录的问题。我正在使用Files类中的createSymbolicLink()方法:http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
绝对路径:
- 目标:
/some/path/target
- 链接:
/some/path/xxx/linkname
我本来期望在目录/some/path/xxx/
中创建一个链接到文件夹/some/path/target
,但实际上创建了一个链接从/some/path/xxx/linkname
到/some/path/xxx/target
。我无法找出我做错了什么。
当我将链接从/some/path/linkname
创建到/some/path/target
时,一切都如预期工作。
非常感谢任何帮助。
编辑: 这是我的代码:
Path records = Paths.get(Properties.getProperty("records.path"));
Path recordsLink = Paths.get(Properties.getProperty("webserver.root") + System.getProperty("file.separator") + records.getFileName());
try {
Files.createSymbolicLink(recordsLink, records);
} catch (IOException e) {
e.printStackTrace();
}
"records.path"和"webserver.root"都是相对路径。
事实上,我刚刚找到了问题的解决方案:如果我这样做,它就能正常工作:
records = records.toAbsolutePath();
我曾以为createSymbolicLink()
会使用绝对路径来创建符号链接,但我的想法是错误的。
cwd
(当前工作目录)的位置。在Java中,它有时可能是任何地方。如果想使用相对路径,需要先cd
到您想要链接的文件夹。请参见:Java更改文件工作目录。 - will