1

我对文件校验和有一个澄清。

在我的测试应用程序中,对于原始文件的重复文件,我得到了相同的校验和值。此外,当我的原始文件被重命名时,生成的校验和是相同的。

那么,我可以使用校验和来放弃对重复文件或重命名文件的处理吗?

4

3 回答 3

1

是的,但您应该使用可用于为您的文件生成指纹的校验和算法。所有校验和都不适用于此。

于 2010-02-03T12:25:15.277 回答
0

嗯,总的来说是的。不过,这取决于您使用的是哪种校验和。

于 2010-02-03T12:17:56.853 回答
0

您应该使用校验和来决定是否可以跳过文件处理。使用文件比较来实际决定。

如果新文件的内容相同,则新文件的校验和将与您的原始文件匹配。它还将匹配其他不相同的文件,因为无论您使用什么校验和方案,可能的文件内容字符串都比校验和值多。(你可以让这个概率很低,但你不能让问题消失)。

因此,如果文件 X(待处理)具有校验和 C,与文件 A(已处理)相同,您应该将 X 的内容与 A 的内容进行比较。如果它们相同,则可以使用回答 A 作为 X 的答案。如果你的校验和方案完全不错,如果 X 和 A 不相同,你会在比较几个字节后发现。(您甚至可以先检查文件大小,但我怀疑这是否会在统计上为您节省任何时间)。

当然,还有计算 X 上的校验和的问题:这需要读取 X 的所有内容。要计算它,您必须读取所有 X。如果生成答案与执行磁盘读取相比便宜,则没有避免工作很重要。

于 2011-03-28T03:01:45.743 回答