我正在寻找一种使用C#检测文件损坏的方法。也许这太模糊了,但我不是在寻找特定类型的腐败,只是想知道是否有办法检测文件是否已被破坏。任何人都知道这是否可行,如果是这样,你怎么在C#中做到这一点?感谢。
答案 0 :(得分:5)
如果您知道该文件应该是什么样子,您可以将它与已知良好的MD5哈希进行比较。
除此之外,如果您正在寻找特定的腐败模式。例如,一个字节序列应该位于某个位置,但它会搞砸,这可能是一个标志。这一切都取决于你正在寻找什么。
答案 1 :(得分:4)
常用方法是使用CRC之类的东西。您将文件中包含的CRC(通常附加到文件)与从有效负载计算的CRC进行比较。如果它们不匹配,则表示数据已损坏。
答案 2 :(得分:1)
没有API可以让您检测文件损坏。你必须自己做,你如何做到这一点取决于你的需求。
答案 3 :(得分:0)
文件系统通常不这样做。据我所知,有三个原因。
首先,任何类型的反腐败算法都会涉及某种类型的校验和,这在计算上有点贵。
其次,至少有两种腐败原因。当驱动器扇区出现故障时,文件可能会损坏,但它们也可能被应用程序损坏。当然,当该应用程序修改文件并保存它的新版本时,它总是会说新版本很棒,即使它用'poop'替换了所有其他单词。
第三,除了在文件损坏时抛出异常,你能做些什么呢?如果您正在检查文件,那么您可以更清楚地知道文件已损坏,但最终它仍然被破坏,除了停止之外您无能为力。