質問

C#を使用してファイルの破損を検出する方法を探しています。これはあいまいすぎるかもしれませんが、特定の種類の腐敗を探しているわけではありません。ファイルが一般的に破損していることを検出する方法があるかどうか疑問に思っています。誰もがこれが可能かどうか、そしてもしそうなら、あなたはC#でそれをする方法を知っていますか?ありがとう。

役に立ちましたか?

解決

ファイルがどのように見えるかがわかっている場合は、既知の良好なMD5ハッシュと比較できます。

それとは別に、あなたが腐敗の特定のパターンを探しているなら。たとえば、バイトのシーケンスはある場所にある必要がありますが、それはめちゃくちゃになり、それは旗の可能性があります。それはすべて、具体的に探しているものに依存します。

他のヒント

一般的な方法は、ようなものを使用することです CRC. 。ファイル内に含まれるCRC(通常はファイルに追加された)とペイロードから計算されたCRCを比較します。それらが一致しない場合、データが破損していることがわかります。

ファイルの破損を検出できるAPIはありません。あなたはそれを自分でやらなければならず、それをどのように行うかはあなたのニーズに魅力的に依存します。

ファイルシステムは通常、これを行いません。私が知る限り、3つの理由があります。

第一に、あらゆる種類の腐敗防止アルゴリズムには、ある種のチェックサムが含まれます。

第二に、腐敗には少なくとも2つの原因があります。ドライブセクターが悪くなるとファイルが破損する可能性がありますが、アプリケーションによって破損する可能性もあります。そしてもちろん、そのアプリケーションがファイルを変更して新しいバージョンを保存すると、他のすべての単語を「うんち」に置き換えたとしても、新しいバージョンが素晴らしいと常に言うでしょう。

第三に、ファイルが破損している場合、例外をスローする以外に何ができますか?ファイルをチェックしている場合、ファイルが壊れていることを知るためのクリーンな方法がありますが、最終的にはまだ壊れており、停止以外にできることはあまりありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top