2009-08-14 112 views
1

我正在尋找一種使用C#檢測文件損壞的方法。也許這太模糊了,但我並沒有尋找特定類型的腐敗,只是想知道是否有辦法檢測到一個文件已被損壞。任何人都知道這是可能的,如果是的話,你會怎麼做在C#中?謝謝。使用C#檢測文件損壞的通用方法?

+0

你能否詳細說明哪些類型的腐敗?使用允許糾錯的編碼可能是一個更好的主意。 – 2009-08-14 17:44:04

回答

5

如果您知道該文件應該是什麼樣子,可以將其與已知的良好MD5散列進行比較。

除此之外,如果你正在尋找具體的腐敗模式。例如,一個字節序列應該位於某個位置,但會變得混亂,這可能是一個標誌。這一切都取決於你正在尋找什麼。

4

常見的方法是使用類似CRC的東西。您將文件中包含的CRC(通常附加到文件)與從有效負載計算出的CRC進行比較。如果它們不匹配,則知道數據已損壞。

1

有沒有API可以讓你檢測到文件損壞。你必須自己動手做,而你如何做到這一點主要取決於你的需求。

0

文件系統通常不會這樣做。據我所知,有三個原因。首先,任何類型的反腐敗算法都會涉及某種類型的校驗和,這在計算上有點貴。

其次,至少有兩個腐敗的原因。驅動器損壞時文件可能會損壞,但它們也可能被應用程序損壞。當然,當應用程序修改文件並保存它的新版本時,它總是會說即使用'poop'代替了每一個單詞,新版本也很棒。

第三,除了在文件損壞時拋出異常,您還能做什麼?如果你正在校驗文件,那麼你有一個更清晰的方式來知道文件被破壞了,但最終它仍然是壞的,除了停止之外,你可以做的並不多。