首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算散列或比较c#中gzip文件的内容

计算散列或比较c#中gzip文件的内容
EN

Stack Overflow用户
提问于 2015-12-08 21:48:41
回答 1查看 947关注 0票数 0

我有一个问题,需要比较.tar.gz文件中的文件,以确保gzip中的文件都不是重复的。我目前使用的是ICSharpCode.SharpZipLib,因为ZipEntry有一个"CRC“属性,所以可以很容易地检查Zip文件中的重复项。这非常简单,因为我可以获得crc和文件大小,并使用LINQ查找在散列和大小方面匹配的任何文件,然后抛出错误或执行任何必要的操作。

然而,除了标准的GetHashCode方法之外,TarEntry没有这样的属性或方法,据我所知,该方法也从文件元数据计算哈希,因此同一文件的副本不具有相同的哈希。有没有一种方法可以(快速)计算gzip文件内容的哈希?或者有没有其他方法来比较内容?

EN

回答 1

Stack Overflow用户

发布于 2015-12-09 13:14:49

首先,如果两个文件的长度不同,那么你立刻就知道它们不可能相等。因此,将其用作zip或tar作为第一个筛选器。

其次,哈希会告诉你两个文件是否不同,但它不能告诉你它们是一样的。如果平等很少见,那么哈希是排除大多数平等竞争者的好方法。假设已经计算了散列值。但是,如果两个哈希值相等,则需要直接比较这两个文件,看看它们是否相等。

如果尚未计算散列,则跳过计算散列并简单地比较相同长度的文件通常会更快。唯一不会更快的方法是,如果您经常使用具有相同长度和公共前缀的文件集,以便它们在文件中只有一些显着的长度不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34157581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档