Java 内部有多个文件的gzip存档

Java 内部有多个文件的gzip存档,java,compression,gzip,Java,Compression,Gzip,我需要创建一个内部有多个文件的gzip存档,如果没有java.util.zip.GZIPOutputStream类可用的ArchiveEntry,我怎么做呢?gzip压缩流。通常,当人们对多个文件使用GZip时,他们也会使用tar将它们咀嚼在一起 您可以在此处找到java tar库: 或者您可以使用Zip而不是GZip,根据 虽然它的文件格式也允许多个这样的流 连接(压缩文件只是解压连接,就像 它们最初是一个文件),gzip通常用于压缩 单个文件 这就是为什么GZIPOutputStream不支

我需要创建一个内部有多个文件的gzip存档,如果没有
java.util.zip.GZIPOutputStream
类可用的
ArchiveEntry
,我怎么做呢?

gzip压缩流。通常,当人们对多个文件使用GZip时,他们也会使用tar将它们咀嚼在一起

您可以在此处找到java tar库:

或者您可以使用Zip而不是GZip,根据

虽然它的文件格式也允许多个这样的流 连接(压缩文件只是解压连接,就像 它们最初是一个文件),gzip通常用于压缩 单个文件

这就是为什么
GZIPOutputStream
不支持
ArchiveEntry

通常,使用
tar
将多个文件归档为一个文件,然后使用
gzip
进行压缩,以生成
.tar.gz
压缩归档文件

您可以通过以下方法创建
tar.gz

它压缩整个目录

file_out = new FileOutputStream (new File ("archive.tar.gz"));
buffer_out = new BufferedOutputStream (file_out);
gzip_out = new GzipCompressorOutputStream (buffer_out);
tar_out = new TarArchiveOutputStream (gzip_out);

// .. and then talk to 'tar_out' to write stuff