随机访问gzip流

jkf*_*kff 12 language-agnostic compression gzip random-access large-files

我希望能够随机访问gzip压缩文件.我可以负担得起对它进行一些预处理(比如构建某种索引),只要预处理的结果比文件本身小得多.

有什么建议?

我的想法是:

  • 破解现有的gzip实现并将每个(例如)1兆字节的压缩数据序列化其解压缩器状态.然后进行随机访问,反序列化解压缩器状态并从兆字节边界读取.这似乎很难,特别是因为我正在使用Java而我找不到纯java gzip实现:(
  • 以1Mb的块重新压缩文件并执行与上面相同的操作.这具有使所需磁盘空间加倍的缺点.
  • 编写一个gzip格式的简单解析器,它不进行任何解压缩,只检测和索引块边界(如果有任何块:我还没有读取gzip格式描述)

Chr*_*heD 6

看看这个链接(C代码示例).

/* zran.c -- example of zlib/gzip stream indexing and random access
...
Run Code Online (Sandbox Code Playgroud)

Gzip只是带有信封的zlib.

  • 现在我发布了一个库:http://code.google.com/p/jzran. (7认同)