我無法理解java.nio.file.Files.isSameFile方法與java.nio.file.Path.equals方法的不同之處。Java NIO - Files.isSameFile與Path.equals的不同之處
請問有人能告訴他們他們有什麼不同嗎?
我無法理解java.nio.file.Files.isSameFile方法與java.nio.file.Path.equals方法的不同之處。Java NIO - Files.isSameFile與Path.equals的不同之處
請問有人能告訴他們他們有什麼不同嗎?
他們是非常不同的。
例如:
final Path p1 = Paths.get("/usr/src");
final Path p2 = Paths.get("/usr/../usr/src");
p1.equals(p2); // FALSE
Files.isSameFile(p1, p2); // true
final Path p1 = fs1.getPath("/usr/src");
final Path p2 = fs2.getPath("/usr/src");
p1.equals(p2); // FALSE
甲Path
等於另一個Path
當且僅當:
FileSystem
;這是Files.isSameFile()
很大的不同,其訪問文件系統和嘗試,看看如果兩個Path
的立場給同一個文件系統資源。
好的。所以等於只是一個平等的檢查其字符串表示,是否正確? – 2015-03-31 12:14:59
不需要。再次閱讀答案。 – fge 2015-03-31 12:16:24
好的。瞭解。謝謝。 – 2015-03-31 13:27:36
isSameFile是從java.nio.file.Files和Path.equals是從java.nio.file.Path
isSameFile - >測試兩個路徑定位相同的文件。 ie)檢查兩個Path對象是否爲同一個文件 equals - >測試此路徑是否與給定對象相等。
你是對的,這使得我的問題變得無效。我已要求刪除該問題。感謝您的回答。 – 2015-03-31 12:22:35
equal() == true
然後isSameFile() == true
isSameFile() == true
,equal()
並不總是true
的isSameFile()
方法首先檢查Path
對象是在equal()
方面相等,並且如果是的話,它會自動返回如果沒有檢查是否存在任何文件,則爲true。
如果Path
對象equals()
比較返回假,那麼它定位於每一個所述路徑是指在文件系統中,並且確定它們是相同的,投擲checked IOException
如果任一文件不存在的文件。
java.nio.file.Files.isSameFile()檢查兩個文件路徑是否指向同一個文件=即兩個都是硬鏈接(這對所有操作系統和文件系統都是可移植的(是的))。此方法也遍歷符號鏈接,然後您可以比較兩個符號鏈接到文件名指向unix文件系統/ Windows NTFS上的同一個inode。
你可以找到(不可編輯)文件複製(這同樣大小和內容),確定是否是軟/硬鏈接,然後如果沒有 - 你可以保存路徑和刪除第一,然後創建鏈接到第二個。您可以節省50%的磁盤空間。
'java.nio.file.Path.isSameFile'不存在。你的意思[java.nio.file.Files.isSameFile(http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#isSameFile(java.nio.file 。路徑,%20java.nio.file.Path))? – 2015-03-31 12:12:39
是的。你是對的。哦,這使得這個問題無效。請求刪除此問題。 – 2015-03-31 12:17:24
你可以編輯它並修復這個錯誤 – fge 2015-03-31 12:19:07