我有问题需要比较.tar.gz文件中的文件,以确保gzip中的文件都不重复。我目前正在使用ICSharpCode.SharpZipLib,它可以很容易地检查Zip文件中的重复项,因为ZipEntry具有“CRC”属性。这很简单,因为我可以获取crc和文件大小,并使用LINQ找到任何匹配散列和大小的文件,然后抛出错误或执行任何必要的操作。计算散列或比较c#中gzip文件的内容
但是,除了标准的GetHashCode方法外,TarEntry没有这样的属性或方法,我的理解也是从文件元数据计算哈希值,因此同一个文件的副本没有相同的哈希值。我能(快速)计算gzip文件内容的散列吗?还是有另一种方法来比较内容?
如果你只是想检查'.tar.gz'文件本身是否是其他'.tag.gz'文件的副本,那么该文件的'sha1'或'sha256'散列就足够了。如果打算打开存档并单独检查每个文件,则不确定要在那里显示哪些内容,但加密散列仍然是确定内容相等的最佳选择。 – ray
是的,我正在比较.tar.gz中的每个文件,以确保文件中没有重复项。 (还是)感谢你的建议。我稍后可能会执行它来自己检查.tar.gz文件。 – ilyketurdles
不幸的是,我没有看到你怎么做你想做的事情,而无需首先提取所有内容。看起来你需要解压+解压档案,然后用加密哈希处理每个单独的文件,但是你必须将所有内容与其他所有内容进行比较 - “O(n^2)”操作。我认为你想要做的是一个坏主意。考虑直接检查档案。如果你担心重复,那么在它们被创建之前先试着照顾它。 – ray