我正在寻找一种使用 C# 检测文件损坏的方法。也许这太含糊了,但我不是在寻找特定类型的损坏,只是想知道是否有一种方法可以检测到文件通常已损坏。任何人都知道这是否可行,如果可以,你将如何在 C# 中做到这一点?谢谢。
2631 次
4 回答
5
如果您知道文件应该是什么样子,您可以将其与已知的良好 MD5 哈希值进行比较。
除此之外,如果您正在寻找特定的腐败模式。例如,一个字节序列应该在某个位置,但它被弄乱了,这可能是一个标志。这完全取决于您要寻找的具体内容。
于 2009-08-14T17:42:46.183 回答
4
常见的方法是使用类似CRC的方法。您将文件中包含的 CRC(通常附加到文件)与根据有效负载计算的 CRC 进行比较。如果它们不匹配,您就知道数据已损坏。
于 2009-08-14T17:44:34.447 回答
1
没有 API 可以让您检测文件损坏。您必须自己做,如何做完全取决于您的需求。
于 2009-08-14T17:45:25.117 回答
0
文件系统通常不这样做。据我所知有三个原因。
首先,任何类型的反腐败算法都将涉及某种类型的校验和,这在计算上有点昂贵。
其次,至少有两个腐败的原因。当驱动器扇区变坏时,文件可能会损坏,但它们也可能被应用程序损坏。当然,当该应用程序修改文件并保存它的新版本时,它总是会说新版本很棒,即使它用“便便”替换了所有其他单词。
第三,当文件损坏时,除了抛出异常之外,你还能做什么?如果您正在校验文件,那么您有一种更简洁的方法可以知道文件已损坏,但最终它仍然损坏,除了停止之外您无能为力。
于 2009-08-14T18:40:15.677 回答