我有問題需要比較.tar.gz文件中的文件,以確保gzip中的文件都不重複。我目前正在使用ICSharpCode.SharpZipLib,它可以很容易地檢查Zip文件中的重複項,因爲ZipEntry具有「CRC」屬性。這很簡單,因爲我可以獲取crc和文件大小,並使用LINQ找到任何匹配散列和大小的文件,然後拋出錯誤或執行任何必要的操作。計算散列或比較c#中gzip文件的內容
但是,除了標準的GetHashCode方法外,TarEntry沒有這樣的屬性或方法,我的理解也是從文件元數據計算哈希值,因此同一個文件的副本沒有相同的哈希值。我能(快速)計算gzip文件內容的散列嗎?還是有另一種方法來比較內容?
如果你只是想檢查'.tar.gz'文件本身是否是其他'.tag.gz'文件的副本,那麼該文件的'sha1'或'sha256'散列就足夠了。如果打算打開存檔並單獨檢查每個文件,則不確定要在那裏顯示哪些內容,但加密散列仍然是確定內容相等的最佳選擇。 – ray
是的,我正在比較.tar.gz中的每個文件,以確保文件中沒有重複項。 (還是)感謝你的建議。我稍後可能會執行它來自己檢查.tar.gz文件。 – ilyketurdles
不幸的是,我沒有看到你怎麼做你想做的事情,而無需首先提取所有內容。看起來你需要解壓+解壓檔案,然後用加密哈希處理每個單獨的文件,但是你必須將所有內容與其他所有內容進行比較 - 「O(n^2)」操作。我認爲你想要做的是一個壞主意。考慮直接檢查檔案。如果你擔心重複,那麼在它們被創建之前先試着照顧它。 – ray