2015-09-17 73 views
2

在linux中我們可以創建相對的符號鏈接。如何在Java NIO.2中創建相對符號鏈接?

ln -s targetfile symlink 

在java中NIO.2

Files.createSymbolicLink(symlink, targetfile); 

此代碼不與相對路徑工作。

+0

什麼是使用絕對路徑或調用Runtime.getRuntime()。EXEC( 「LN -s BLA-嗒嗒」)的問題? – Taras

+0

請詳細說明「不適用於相對路徑」。 'Files.createSymbolicLink(FileSystems.getDefault()。getPath(「lnk」),FileSystems.getDefault()。getPath(「target」))'按預期工作,在當前目錄中創建'lnk - > target'。 – dhke

+0

@Taras正確使用該代碼。但我需要跨平臺支持。 – hurelhuyag

回答

1

下面是在創建符號鏈接時爲了使其在跨平臺環境中可訪問而給出相對路徑的代碼。

Path source = Paths.get("D:\\A\\B\\C\\D\\E\\F\\G\\a.mp4"); // original file's absolute path 
Path link = Paths.get("D:\\A\\B\\C\\D\\E\\F\\H\\I\\a.mp4"); // symbolic link's absolute path 
Path relativeSrc = link.getParent().relativize(source); // relative path of original file from symbolic link 

link.getParent().toFile().mkdirs(); // create the directory hierarchy if any folder is not available 
Files.createSymbolicLink(link, reativeSrc); // create symbolic link. 

希望這將有助於:)

0

Files.createSymbolicLink(destination,targetDirectory。relativize(targetfile));

相關問題