我希望能够对 gzip 压缩文件进行随机访问。只要预处理的结果比文件本身小得多,我就有能力对其进行一些预处理(例如,构建某种索引)。
有什么建议吗?
我的想法是:
- 破解现有的 gzip 实现并序列化其解压缩器状态,例如每 1 兆字节的压缩数据。然后进行随机访问,反序列化解压缩器状态并从兆字节边界读取。这似乎很难,特别是因为我正在使用 Java 并且我找不到纯 Java gzip 实现:(
- 以 1Mb 的块重新压缩文件并执行与上述相同的操作。这具有使所需磁盘空间增加一倍的缺点。
- 编写一个简单的 gzip 格式解析器,它不做任何解压缩,只检测和索引块边界(如果甚至有任何块:我还没有阅读 gzip 格式描述)