具有检查点的开源压缩算法

J T*_*J T 6 c++ compression algorithm open-source gzip

我使用gcc 4.5.0和msvc8/9在C++中工作.

我希望能够压缩文件(10 Gb),然后使用我的应用程序打开此文件.

但是,文件内容是这样的,每当我使用它们时,我不一定需要它们内部的所有内容.

因此,例如,有一次我打开其中一个压缩文件,并决定我想在不加载文件的情况下寻找文件的95%.使用像gzip这样的压缩算法,这是不可能的:我必须解压缩文件的前95%,然后才能解压缩最后的5%.

So, are they any libraries similar to gzip, that are open source 
and available for commercial use, that have built in check points, 
to re-sync the decompression stream?
Run Code Online (Sandbox Code Playgroud)

我认为也许一个失败的音频编解码器可能会成功.我知道其中一些算法有检查点,因此您可以通过音乐文件进行搜索,而不必等待音乐文件的全部内容被解压缩.使用音频编解码器进行数据解压缩是否存在缺陷?

谢谢!

Nic*_*son 4

bzip2是免费且开源的,并且具有现成的库实现。它是基于块的,因此您可以仅解压缩您需要的部分。不过,如果您需要查找解压缩文件中的特定位置,则可能需要在所有 bzip2 块上构建一个简单的索引,以便您确定哪个块包含您需要的地址。

gzip 虽然基于流,但可以在任意块边界上重置。任意数量的 gzip 流的串联本身就是一个有效的 gzip 流,因此您可以轻松地在块压缩模式下操作 gzip,而不会破坏与现有解压缩器的兼容性。