我需要在運行時創建長度超過255個字符的文件的硬鏈接(這是真正的Excel/Word 2011限制的解決方法)。但是由於同一個文件可能會在以後再次打開,我不想重新創建硬鏈接,如果我已經在第一次創建它的路徑中創建它(我有一個使用a創建這種-short-路徑的方案UUID)。這意味着我需要檢查已經「緩存」的文件,因爲硬鏈接仍然是我爲用戶打開的文件的硬鏈接。所以我需要檢查2個路徑是否是到同一個文件的硬鏈接。而且我意識到測試時存在潛在的競爭條件,但硬鏈接完全由我的應用管理。如何確定兩條路徑是可鏈接到可可相同文件的硬鏈接?
1
A
回答
2
這裏是做現代的方式:
NSError* error;
id fileID1, fileID2;
if (![url1 getResourceValue:&fileID1 forKey:NSURLFileResourceIdentifierKey error:&error])
/* handle error */;
if (![url2 getResourceValue:&fileID2 forKey:NSURLFileResourceIdentifierKey error:&error])
/* handle error */;
if ([fileID1 isEqual:fileID2])
/* URLs point to the same file (inode) */;
NSURLFileResourceIdentifierKey
正好爲這個目的的。
0
我找到了一個解決方案:
NSDictionary *attr1 = [[NSFileManager defaultManager] attributesOfItemAtPath:url1.path error:NULL];
NSDictionary *attr2 = [[NSFileManager defaultManager] attributesOfItemAtPath:url2.path error:NULL];
NSLog(@"ino1: %@", attr1[NSFileSystemFileNumber]);
NSLog(@"ino2: %@", attr2[NSFileSystemFileNumber]);
NSLog(@"fs1 : %@", attr1[NSFileSystemNumber]);
NSLog(@"fs2 : %@", attr2[NSFileSystemNumber]);
如果INO1和ino2是相同的,和FS1和FS2是相同的,這個inode是一樣的,所以這些文件是硬鏈接:
BOOL hardLInks = [ino1 isEqual:ino2] && [fs1 isEqual:fs2];
相關問題
- 1. 鏈接是否可以鏈接到csrf?
- 2. 確定兩個文件是否在Windows上硬鏈接?
- 3. 如何確定符號鏈接指向的文件的路徑?
- 4. 如何確定文件是否有在PHP硬鏈接
- 5. 鏈接到Richtextbox中的文件路徑
- 6. cmake - 是否有可能在運行時將可執行文件與相對路徑鏈接到共享庫?
- 7. 帶可視化的GWT:將兩個可視化鏈接到相同的數據
- 8. 如何直接鏈接到我可以更改的文件?
- 9. 在可執行文件中使用符號鏈接的相對路徑
- 10. 是否可以「鏈接」Laravel RESTful路由?
- 11. Cmake只鏈接到可執行文件
- 12. 根據root + web鏈接確定文件/文件夾路徑?
- 13. 鏈接路徑
- 14. 隱藏符號鏈接文件夾到硬鏈接文件夾
- 15. 同步路徑時,Nerdtree可以處理符號鏈接嗎?
- 16. 如何在flex3中結合可鏈接和不可鏈接的文本?
- 17. 是否有可能將鏈接重定向到pdf文件
- 18. 在VS中,鏈接的文件是否可以有部分路徑?
- 19. WORD 2003 - 將超鏈接添加到其他文件....我可以使用超鏈接中的當前路徑
- 20. 打開鏈接與可可
- 21. 如何創建可下載的鏈接到文本文件?
- 22. 文本轉換網址鏈接到可點擊的鏈接
- 23. 如何找到鏈接的目標路徑,如果該文件是一個鏈接文件
- 24. 可移植性如何將可執行文件鏈接到可加載模塊?
- 25. 是否有可能添加一個鏈接的HTML鏈接到jQuery的可拖動/可拖放文本?
- 26. 如何定義鏈接路徑
- 27. 如何判斷兩條路徑中的哪一條是符號鏈接?
- 28. 確定如果遵循鏈接的路徑名是什麼?
- 29. 在zip壓縮文件中可以使用硬鏈接嗎?
- 30. Webview鏈接控件可可App
Inodes('NSFileSystemFileNumber')在給定的捲上只是唯一的。您還應該比較'NSFileSystemNumber'給出的卷號,以確保您擁有相同的文件。 – CRD
好點,CRD,謝謝! – charles