我有大量的“输入”数据,我想压缩为多个bzip2流,而无需将数据写入多个中间文件。

我是否可以将大量输入数据放入缓冲区中,使用BZ2_bzBuffToBuffCompress()将其压缩为bzip2类型的字节,然后对新数据重复随后的BZ2_bzBuffToBuffCompress()调用,直到没有更多输入数据了?

bzip2 documentation表示以下内容:


  以这种方式进行压缩是一次事件,只需对该函数进行一次调用即可完成。生成的压缩数据是完整的bzip2格式的数据流。没有机制可以进行额外的调用以提供额外的输入数据。如果需要这种机制,请使用低级接口。


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

编辑

实际上,我的意思是输出到一个存档文件,其中可能包含一个或多个bzip流。

最佳答案

您可以继续用自己喜欢的新数据调用BZ2_bzBuffToBuffCompress(),然后生成我认为您想要的内容,即:


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


那正是您将得到的。多个bzip2流。这些流中的每一个都需要分别解码。

如果要使用一系列缓冲区并从中创建单个bzip2流,则需要使用BZ2_bzCompressInitBZ2_bzCompressBZ2_bzCompressEnd

关于c - 可以重复调用BZ2_bzBuffToBuffCompress()吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11816563/

10-14 05:15