我正在尝试使用 GZipStream 编写一些应用程序跟踪(它们在生产中往往会增长到巨大的尺寸)。因此,在这种情况下,我需要能够打开现有文件并使用 GZipStream 附加到该文件。在我们尝试解压缩文件之前,一切似乎都运行良好。看起来,在解压缩时,GZipStream 仅读取第一个数据块,然后表现得就像达到了 EOF(即使文件包含更多数据)。奇怪的是,当使用 Windows 或 Winrar 打开文件时,所有数据似乎都存在并正确提取。以前有人遇到过这个问题吗?
我遇到了同样的问题。这个想法是实现类似http://zlib.net/pigz/的东西。
这个想法是删除旧 gzip 块(页脚)的最后 8 个字节,从页脚中提取 CRC 和大小,然后添加一些零,然后附加新块,然后根据新旧块的大小和 CRC 重新计算源大小和 CRC ,并替换生成的页脚。这里的问题是我没有找到如何根据两部分 CRC 生成有效的和 CRC。此外,新块需要首先删除其标头。
Pigz 所做的还在块之间共享一些字典数据,并且它执行上述所有操作,因此您可以查看源代码。