可以重复调用BZ2_bzBuffToBuffCompress()吗?
我有大量的“输入”数据,我想压缩到多个bzip2
流,而无需将数据写入多个中间文件。可以重复调用BZ2_bzBuffToBuffCompress()吗?
我可以把输入数据块到缓冲区中,使用BZ2_bzBuffToBuffCompress()
来压缩缓冲区的bzip2味字节,并与新的数据随后BZ2_bzBuffToBuffCompress()
调用重复,直到我有没有留下更多的输入数据?
的bzip2 documentation说以下内容:
压缩以这种方式是一次性事件,与该功能的单一调用来完成。得到的压缩数据是一个完整的bzip2格式数据流。没有任何机制可以提供额外的电话来提供额外的输入数据。如果您想要这种机制,请使用低级界面。
这是否意味着我不能在新填充的缓冲区大小的输入数据上重新运行BZ2_bzBuffToBuffCompress()
?我应该用BZ2_bzWrite()
代替吗?
编辑
我其实是输出到一个档案文件,其中可能包含一个或一个以上的bZIP流。
你可以保持通话BZ2_bzBuffToBuffCompress()
与所有你喜欢的新的数据,你会产生什么,我认为你说你想要的,这是:
数据,我想压缩到多个bzip2的流
这正是你会得到的。多个bzip2流。这些流中的每一个都需要单独解码。
如果要采取一系列的缓冲区,并作出单 bzip2的流了出来,那么你将需要使用BZ2_bzCompressInit
,BZ2_bzCompress
和BZ2_bzCompressEnd
。
谢谢,我认为你的第二个建议是我的想法。一旦我验证了这一点,我会对此进行测试并将您的答案标记为正确。 – 2012-08-05 21:30:58
我在阅读文档时的理解是,您不能将更多数据添加(追加)到已压缩的缓冲区,但创建多个单独的压缩流或缓冲区是可以的。 – 2012-08-05 13:03:58