我有重达≈200≈的文本文件。
我把key - position_in_file存储在DB对中,
并使用fseek访问数据。
有没有推荐的压缩文件的方法,
并试图在压缩文件中定位,
而不需要从文件开始进行解压缩。
我更喜欢用C作为语言
不需要执行写。不需要太快
发布于 2015-07-07 17:19:38
这是一个泄气数据的随机存取实例。它只在压缩的数据中运行一次,以构建一个随机访问索引,入口点约为未压缩数据的1MB。(你可以改变密度。)每个入口点位于一个放气块边界,并保存它之前的32K未压缩数据,以便填充用于解压的滑动字典。
发布于 2015-07-07 16:15:04
我知道有两种方法。
标准gunzip程序能够成功地解压缩两个或多个.gz文件的级联。因此,您可以将文件压缩成块,并构建一个索引,该索引告诉您在哪里查找“块”gzip文件开始解压缩。
例如,如果我拥有(人工微小的)数据库
a apple
b beneficial
c carotene
d diatomaceous如果我不压缩,我就可以建立一张键表,然后寻找这样的偏移:
a 0
b 8
c 21
d 32如果我想使用两行大小的块创建一个块压缩文件,我可以这样做(在shell中,而不是在C中):
sed -n 1,2p d | gzip > d.gz
sed -n 3,4p d | gzip >> d.gz我的块压缩文件索引将有三个字段:键、块压缩文件中的查找偏移量和一个额外的偏移量(解压缩后)以在块中找到该键:
a 0 0
b 0 8
c 41 0
c 41 11bzip2程序有一些内置的工具,但我不记得细节了。
https://stackoverflow.com/questions/31273945
复制相似问题