2009-08-14 10 views
1

私はC#を使用してファイルの破損を検出する方法を探しています。たぶんこれはあまりにも曖昧ですが、ファイルが一般的に壊れていることを検出する方法があるかどうか疑問に思っています。誰でもこれが可能かどうかを知っていれば、C#でそれをどうやってやるの?ありがとう。一般的な方法は、C#を使用してファイルの破損を検出するには?

+0

どのような種類の破損について詳しく説明できますか?エラー訂正を可能にするエンコーディングを使用する方がよいでしょう。 –

答えて

5

ファイルの外観を知っていれば、それを既知の優れたMD5ハッシュと比較することができます。

それ以外に、特定のパターンの腐敗を探している場合は、たとえば、一連のバイトはある場所にあるはずですが、フラグがつぶれてしまいます。それはすべてあなたが探しているものに依存します。

4

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

1

ファイルの破損を検出できるAPIはありません。あなたはそれを自分で行う必要がありますし、それをどのように行うかは、あなたの必要に応じて慎重に異なります。

0

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

最初に、あらゆる種類のアンチ・ブロッキング・アルゴリズムは、計算上少し費用がかかるタイプのチェックサムを含むことになります。

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

第3に、ファイルが破損しているときに例外をスローする以外に何ができますか?ファイルをチェックサムしている場合は、ファイルが壊れていることを知るためのよりきれいな方法がありますが、結局それはまだ壊れていて、停止以外のことはほとんどできません。

関連する問題