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