Java 将tar.gz文件中的两个文件提取到内存中

Java 将tar.gz文件中的两个文件提取到内存中,java,android,gzip,Java,Android,Gzip,我有一个GZIP档案,里面有两个文件,用tar工具打包。我需要把它们都提取到内存中。所以我需要得到两个字节的数组作为结果。但是所有使用GZIPInputStream的示例都只是读取字节并将它们保存到输出流中,因此我不知道如何获得两个字节[]数组作为结果 应该做你需要的事。以下是他们主页上的一段摘录,描述了这是什么: 图书馆档案 多格式存档和压缩库 源发行版包括libarchive库、bsdtar和bsdcpio命令行程序、完整测试套件和文档: 稳定发布:自2013年1月13日起 遗留版本:自2

我有一个GZIP档案,里面有两个文件,用tar工具打包。我需要把它们都提取到内存中。所以我需要得到两个字节的数组作为结果。但是所有使用GZIPInputStream的示例都只是读取字节并将它们保存到输出流中,因此我不知道如何获得两个字节[]数组作为结果

应该做你需要的事。以下是他们主页上的一段摘录,描述了这是什么:

图书馆档案 多格式存档和压缩库 源发行版包括libarchive库、bsdtar和bsdcpio命令行程序、完整测试套件和文档: 稳定发布:自2013年1月13日起 遗留版本:自2011年9月3日起 libarchive库的功能包括:

支持多种存档和压缩格式

强健的自动格式检测,包括存档/压缩组合,如tar.gz

零拷贝内部体系结构,实现高性能

流式体系结构消除了存档大小的所有限制,条目大小的限制取决于特定的格式

当程序静态链接时,仔细分解代码以最小化膨胀

不断增长的测试套件,用于验证新端口的正确性

适用于大多数类似POSIX的系统,包括FreeBSD、Linux、Solaris等

支持Windows,包括Cygwin、MinGW和Visual Studio。

bsdtar和bscpio命令行实用程序在功能和性能方面与其他tar和cpio实现具有竞争力:

读取多种格式,包括tar、pax、cpio、zip、xar、lha、ar、cab、mtree、rar和ISO图像

写入tar、pax、cpio、zip、xar、ar、ISO、mtree和shar归档文件

自动处理使用gzip、bzip2、lzip、xz、lzma或compress压缩的归档文件

独特的格式转换功能


我有GZIP档案,里面有两个文件。GZIP不是这样工作的。它没有多个文件的概念。这只是压缩的数据。@JonSkeet我的错误,我已经更新了这个问题。那么你的意思是你实际上得到了一个tar.gz文件,还是一个tgz文件?如果是这样,您需要将提取的gzip部分与tar部分分开。解压gzip文件时,会得到一个tar文件,然后可以从中得到两个文件。@jonskeettar.gz。有使用.tar文件的例子吗?请注意,我不想创建任何临时文件。这可能吗?我自己还没有使用过任何tar库——尽管如此。虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生变化,只有链接的答案可能会无效。如果我提供了有关如何使用libarchive的基本部分,而链接消失,那么这些基本部分也将变得无用。我理解链接的易变性,但我不知道如何在链接消失的情况下改进答案。这根本不是真的。链接可以改变。断开的链接并不意味着产品不再存在或变得无用。别担心,我继续编辑了您的答案,添加了他们主页上的所有重要部分,向未来的访问者解释libarchive是什么。