首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TrueZip随机访问功能

TrueZip随机访问功能
EN

Stack Overflow用户
提问于 2012-10-05 22:49:48
回答 3查看 502关注 0票数 3

我正在尝试理解如何在Java6环境中使用TrueZIP随机遍历.tar.gz中的一个或多个文件(使用Files类)。我找到了使用Java7的Path的实例,但是,我想不出如何在Java6上随机读取归档文件的示例。

此外,“随机”读取是否意味着它首先解压缩整个归档,还是读取压缩文件中的部分?这样做的目的是,我想从文件中检索一些基本信息,而不必解压缩整个东西来读取它(即用户名)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-05 23:15:27

我并不特别了解TrueZip,但至少在Zip、RAR和Tar方面,你可以访问单个文件并检索有关它们的详细信息,甚至可以在不接触包的其余部分的情况下提取它们。

另外,随机读取是否意味着它首先解压缩整个归档

如果TrueZip遵循Zip/RAR/Tar格式,那么它不会解压缩整个归档。

的目的是,我想从文件中检索一些基本信息,而不必解压缩整个文件来读取它(即用户名)。

和以前一样,这应该很好--我不是特别了解TrueZip API,但是文件容器格式允许您在不读取任何数据的情况下检查文件信息,并且可以选择提取/读取文件内容,而不需要接触容器中的任何其他文件。

票数 1
EN

Stack Overflow用户

发布于 2012-10-05 23:18:15

gzip用于压缩文件(尤其是.tar.gz文件)的方法通常意味着输出文件不是随机可访问的-您需要整个文件到当前块的符号表和其他上下文,才能解压缩该块以查看其中的内容。这是它在ZIP/pkzip上实现(某种程度上)更好的压缩的方法之一,在将每个文件添加到容器存档之前,它会单独压缩每个文件,从而能够搜索到特定文件并解压缩该文件。

因此,为了拆分.tar.gz,您需要将整个内容解压缩到一个临时文件或内存中(如果它不是太大),然后您可以跳转到底层.tar文件中的特定条目,尽管这必须通过从一个标题跳到另一个标题来顺序完成,因为tar不包括文件的中央索引/目录。

票数 3
EN

Stack Overflow用户

发布于 2012-10-05 23:16:29

zran的源代码注释描述了这些工具是如何工作的:http://svn.ghostscript.com/ghostscript/tags/zlib-1.2.3/examples/zran.c

总而言之,可以说必须对整个文件进行处理以生成必要的索引。这比实际解压一切都要快得多。该索引允许将文件拆分成可解压缩的块,而不必先解压缩这些块。用于模拟随机访问的。

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

https://stackoverflow.com/questions/12748764

复制
相关文章

相似问题

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