0

我有大量“输入”数据要压缩到多个bzip2流中,而不是将数据写入多个中间文件。

我可以将一大块输入数据放入缓冲区,用于BZ2_bzBuffToBuffCompress()将该缓冲区压缩为 bzip2 风格的字节,然后在后续BZ2_bzBuffToBuffCompress()调用新数据时重复此操作,直到我没有更多输入数据?

bzip2 文档说明如下:

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

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

编辑

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

4

1 回答 1

2

您可以随心所欲地使用新数据继续调用BZ2_bzBuffToBuffCompress(),您将生成我认为您所说的想要的内容,即:

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

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

如果您想获取一系列缓冲区并从中生成单个bzip2 流,那么您将需要使用BZ2_bzCompressInitBZ2_bzCompressBZ2_bzCompressEnd.

于 2012-08-05T14:13:08.757 回答