首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找压缩文件

查找压缩文件
EN

Stack Overflow用户
提问于 2015-07-07 16:10:02
回答 2查看 1.6K关注 0票数 1

我有重达≈200≈的文本文件。

我把key - position_in_file存储在DB对中,

并使用fseek访问数据。

有没有推荐的压缩文件的方法,

并试图在压缩文件中定位,

而不需要从文件开始进行解压缩。

我更喜欢用C作为语言

不需要执行写。不需要太快

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-07 17:19:38

这是一个泄气数据的随机存取实例。它只在压缩的数据中运行一次,以构建一个随机访问索引,入口点约为未压缩数据的1MB。(你可以改变密度。)每个入口点位于一个放气块边界,并保存它之前的32K未压缩数据,以便填充用于解压的滑动字典。

票数 3
EN

Stack Overflow用户

发布于 2015-07-07 16:15:04

我知道有两种方法。

标准gunzip程序能够成功地解压缩两个或多个.gz文件的级联。因此,您可以将文件压缩成块,并构建一个索引,该索引告诉您在哪里查找“块”gzip文件开始解压缩。

例如,如果我拥有(人工微小的)数据库

代码语言:javascript
复制
a    apple
b    beneficial
c    carotene
d    diatomaceous

如果我不压缩,我就可以建立一张键表,然后寻找这样的偏移:

代码语言:javascript
复制
a    0
b    8
c    21
d    32

如果我想使用两行大小的块创建一个块压缩文件,我可以这样做(在shell中,而不是在C中):

代码语言:javascript
复制
sed -n 1,2p d | gzip > d.gz
sed -n 3,4p d | gzip >> d.gz

我的块压缩文件索引将有三个字段:键、块压缩文件中的查找偏移量和一个额外的偏移量(解压缩后)以在块中找到该键:

代码语言:javascript
复制
a    0    0
b    0    8
c    41   0
c    41   11

bzip2程序有一些内置的工具,但我不记得细节了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31273945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档