我創建了一個包含文件列表的符號鏈接文件夾。有沒有辦法將符號鏈接轉換爲使用java的HardLink?隱藏符號鏈接文件夾到硬鏈接文件夾
1
A
回答
0
若要用java硬鏈接,你可以使用:
Path newLink = ...;
Path existingFile = ...;
try {
Files.createLink(newLink, existingFile);
} catch (IOException x) {
System.err.println(x);
} catch (UnsupportedOperationException x) {
// Some file systems do not
// support adding an existing
// file to a directory.
System.err.println(x);
}
所以,你的情況newLink
應該是你創建的oldSymbolicLink
和existingFile
表示其目標。
獲取符號鏈接的目標,你可以使用
Files.readSymbolicLink(oldSymbolicLink));
+0
如果我們從符號鏈接文件夾創建硬鏈接,它將無法正常工作,對吧? –
0
的Java doc由別人指出說,在目錄硬鏈接不能創建。所以,我不會告訴你如何創建目錄的硬鏈接,而是要解釋爲什麼你不能在目錄上創建硬鏈接。
當您嘗試遍歷目錄樹時,硬鏈接在目錄上會導致循環。
例如,如果你有一個目錄/foo/bar
和符號鏈接/foo/bar/baz
指向../bar
,當您嘗試遍歷這棵樹,你會遇到一個無限循環。現在
/foo/
/foo/bar
/foo/bar/baz
/foo/bar/baz/bar
/foo/bar/baz/bar/baz
...
,如果baz
是一個符號鏈接../bar
,它是簡單的使用unlink(2)
系統調用(因爲取消鏈接不跟隨符號連接)斷開鏈接baz
修復。但是,如果baz
是一個硬鏈接,那麼這將是很多harder
(沒有雙關語意圖)來解決這個問題。在「Unix環境下的高級編程」一書中,Stephen Rago指出Rich Stevens在嘗試這個實驗時損壞了他的文件系統(並且fsck
無法恢復)
相關問題
- 1. Tomcat與子文件夾符號鏈接
- 2. 創建文件夾的符號鏈接
- 3. 符號鏈接到文件夾中的最新文件
- 4. SVN鏈接文件夾
- 5. Eclipse,鏈接源文件夾
- 6. 鏈接源文件夾
- 7. 生成文件,符號鏈接文件夾&相對路徑
- 8. git的子文件夾到分支保存文件夾鏈接
- 9. 如何將文件夾切換到svn中的符號鏈接
- 10. 創建鏈接到共享文件夾鏈接到MediaWiki
- 11. 私人文件夾鏈接到用戶
- 12. 相對鏈接到子文件夾?
- 13. 超鏈接到webdav文件夾
- 14. 顯示文件夾並建立這些文件夾的鏈接
- 15. Capistrano 3符號鏈接公共文件夾
- 16. 如何讓svn忽略文件夾的符號鏈接
- 17. 當刪除原始文件夾時刪除符號鏈接
- 18. PHP符號鏈接():在可寫文件夾中拒絕權限
- 19. PHP Windows,符號鏈接文件夾的rmdir
- 20. NPM 5的安裝文件夾,而不使用符號鏈接
- 21. 符號鏈接作爲包括在Visual Studio中的文件夾
- 22. 如何爲不存在的文件夾創建符號鏈接?
- 23. 微軟Azure符號鏈接存放文件夾Laravel
- 24. 刪除包含符號鏈接的文件夾
- 25. 符號鏈接:找到鏈接到該文件
- 26. express.js中的文件夾無法鏈接
- 27. Sharepoint - 文件夾鏈接無法解析
- 28. 加載帶有.html文件鏈接到/ assets文件夾的WebView
- 29. 火狐鏈接到本地Windows文件夾和文件
- 30. 重定向文件夾鏈接到xml文件
你爲什麼要這樣做?硬鏈接很少是一個好主意。 –
您是否閱讀過https://docs.oracle.com/javase/tutorial/essential/io/links.html? – 2016-12-05 07:43:50
@Eli sadoff要求就是這樣。三個文件夾source-temp-destination。源到他們需要使用符號鏈接的溫度。一旦最終修改完成。他們需要將臨時文件夾中的文件移動到目標位置並刪除臨時文件夾。 –