wikipedia - 在 7z 单个文件存档中随机查找

标签 wikipedia 7zip compression random-access

是否可以对由 7zip 压缩的非常大的文件进行随机访问(大量搜索)?

原始文件非常大(999gb xml),我无法以解压格式存储它(我没有太多可用空间)。因此,如果 7z 格式允许访问中间块而无需在选定块之前解压缩所有块,我就可以构建块开始索引和相应的原始文件偏移量。

我的 7z 文件的标题是

37 7A BC AF 27 1C 00 02 28 99 F1 9D 4A 46 D7 EA  // 7z archive version 2;crc; n.hfr offset
00 00 00 00 44 00 00 00 00 00 00 00 F4 56 CF 92  // n.hdr offset; n.hdr size=44. crc
00 1E 1B 48 A6 5B 0A 5A 5D DF 57 D8 58 1E E1 5F
71 BB C0 2D BD BF 5A 7C A2 B1 C7 AA B8 D0 F5 26
FD 09 33 6C 05 1E DF 71 C6 C5 BD C0 04 3A B6 29

更新:7z 归档器说这个文件有一个数据块,用 LZMA 算法压缩。测试的解压速度为 600 MB/s(解压数据),仅使用一个 CPU 内核。

最佳答案

这在技术上是可行的,但如果您的问题是“当前可用的二进制 7zip 命令行工具是否允许这样做”,那么很遗憾,答案是否定的。
它允许的最好方法是将每个文件独立压缩到存档中,允许直接检索文件。
但是由于您要压缩的是单个(巨大)文件,因此此技巧将不起作用。

恐怕唯一的方法是将您的文件分成小块,并将它们提供给 LZMA 编码器(包含在 LZMA SDK 中)。不幸的是,这需要一些编程技能。

注意:可以在此处找到技术上较差但微不足道的压缩算法。
主程序正是您所需要的:将源文件切成小块,并将它们一个一个地提供给压缩器(在本例中为 LZ4)。然后解码器执行相反的操作。它可以轻松跳过所有压缩块并直接转到您要检索的块。
http://code.google.com/p/lz4/source/browse/trunk/lz4demo.c

关于wikipedia - 在 7z 单个文件存档中随机查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7882337/

相关文章:

mysql - 在两个维基百科中选择更大的文章

python - 如果我在numpy中将float64数组压缩为float32,我应该担心什么?

java - Java 项目的 LessCSS/JS 编译器和压缩器

java - 如何获取一个不断更改名称的 JSON 对象

javascript - 从维基百科中提取文本内容 - iframe?

python-2.7 - 我如何使用 Pandas (python) 读取 7z 文件并将其转换为 csv?

Powershell 7Zip 压缩无法分配所需的内存

c++ - 如何压缩文件夹使用 lzma sdk?

javascript - 使网站加载更快

iphone - 如何将自定义菜单项添加到 UITextView 菜单,这是指向所选单词的维基百科页面的链接?