我有大量“输入”数据,我想将其压缩到多个 bzip2
流,而不将数据写入多个中间文件。
我可以将一大块输入数据放入缓冲区,使用 BZ2_bzBuffToBuffCompress()
将该缓冲区压缩为 bzip2 风格的字节,并重复后续的 BZ2_bzBuffToBuffCompress()
调用新数据,直到我没有更多输入数据为止?
Compression in this manner is a one-shot event, done with a single call to this function. The resulting compressed data is a complete bzip2 format data stream. There is no mechanism for making additional calls to provide extra input data. If you want that kind of mechanism, use the low-level interface.
这是否意味着我无法在新填充的缓冲区大小的输入数据 block 上重新运行 BZ2_bzBuffToBuffCompress()
?我应该使用 BZ2_bzWrite()
来代替吗?
编辑
我实际上是指输出到一个存档文件,该文件可能包含一个或多个 bzip 流。
最佳答案
您可以继续使用您喜欢的新数据调用 BZ2_bzBuffToBuffCompress()
,您将生成我认为您所说的想要的内容,即:
data that I want to compress to multiple bzip2 streams
这正是您将得到的。多个 bzip2 流。然后,每个流都需要单独解码。
如果您想获取一系列缓冲区并从中创建一个单个 bzip2 流,那么您将需要使用 BZ2_bzCompressInit
、BZ2_bzCompress
和BZ2_bzCompressEnd
。
关于BZ2_bzBuffToBuffCompress()可以重复调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816563/