c – 如何连接两个或更多gzip文件/流
我想连接两个或更多的gzip流,而不需要重新压缩它们.
我的意思是我有A压缩为A.gz和B到B.gz,我想压缩它们到单个gzip(A B).gz,而不用压缩再次使用C或C. 几个注释: >即使你可以连接两个文件,gunzip会知道如何处理它们,大多数程序将无法处理两个块. 注意:它不是this的重复,因为提出的解决方案不符合我的需要. 清除编辑: 我想要将几个压缩的HTML pices并行,并将它们作为一个页面发送到浏览器,根据请求:“Accept-Encoding:gzip”,其中包含“Content-Encoding:gzip” 如果流像cat a.gz b.gz> ab.gz一样简单,Gecko(firefox)和KHTML Web引擎只会获得第一部分(a); IE6不显示任何内容,Google Chrome会正确显示第一部分(a),将第二部分(b)显示为垃圾(根本不解压缩). 只有歌剧处理好这个. 所以我需要创建一个单个gzip流的几个块,并发送它们而不需要重新压缩. 更新:我在zlib的例子中找到了gzjoin.c,它只使用解压缩.问题是解压缩速度还是比较简单的memcpy. 它仍然是更快的4倍,然后最快的gzip压缩.但这还不够. 我需要的是找到我需要与gzip文件一起保存的数据 解决方法
看看
RFC1951和
RFC1952
格式只是一个成员的套件,每个由三个部分组成,一个标题,数据和一个预告片.数据部分本身是一组块,每个块具有标题和数据部分. 为了模拟两个(或多个文件)连接的结果的效果,您只需要调整标题(实际上有一个最后一个块标志)和预告片并复制数据部分. 有一个问题,预告片有一个CRC32的未压缩数据,我不知道这个是否容易计算,当你知道零件的CRC. 编辑:您发现的gzjoin.c文件中的注释意味着,虽然可以在不解压缩数据的情况下计算CRC32,但还有其他需要解压缩的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |