可以重复调用BZ2_bzBuffToBuffCompress()吗?

问题描述:

我有大量的“输入”数据,我想压缩到多个bzip2流,而无需将数据写入多个中间文件。可以重复调用BZ2_bzBuffToBuffCompress()吗?

我可以把输入数据块到缓冲区中,使用BZ2_bzBuffToBuffCompress()来压缩缓冲区的bzip2味字节,并与新的数据随后BZ2_bzBuffToBuffCompress()调用重复,直到我有没有留下更多的输入数据?

bzip2 documentation说以下内容:

压缩以这种方式是一次性事件,与该功能的单一调用来完成。得到的压缩数据是一个完整的bzip2格式数据流。没有任何机制可以提供额外的电话来提供额外的输入数据。如果您想要这种机制,请使用低级界面。

这是否意味着我不能在新填充的缓冲区大小的输入数据上重新运行BZ2_bzBuffToBuffCompress()?我应该用BZ2_bzWrite()代替吗?

编辑

我其实是输出到一个档案文件,其中可能包含一个或一个以上的bZIP流。

+0

我在阅读文档时的理解是,您不能将更多数据添加(追加)到已压缩的缓冲区,但创建多个单独的压缩流或缓冲区是可以的。 – 2012-08-05 13:03:58

你可以保持通话BZ2_bzBuffToBuffCompress()与所有你喜欢的新的数据,你会产生什么,我认为你说你想要的,这是:

数据,我想压缩到多个bzip2的流

这正是你会得到的。多个bzip2流。这些流中的每一个都需要单独解码。

如果要采取一系列的缓冲区,并作出 bzip2的流了出来,那么你将需要使用BZ2_bzCompressInitBZ2_bzCompressBZ2_bzCompressEnd

+0

谢谢,我认为你的第二个建议是我的想法。一旦我验证了这一点,我会对此进行测试并将您的答案标记为正确。 – 2012-08-05 21:30:58