gzip存档里面有多个文件

时间:2012-05-18 13:36:18

标签: java compression gzip

我需要创建一个包含多个文件的gzip存档,如何在ArchiveEntry类没有java.util.zip.GZIPOutputStream的情况下执行此操作?

2 个答案:

答案 0 :(得分:11)

根据gzip上的Wikipedia entry

  

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

这就是GZIPOutputStream不支持ArchiveEntry

的原因

通常情况下,多个文件会归档到tar的文件中,然后使用gzip进行压缩,以生成.tar.gz压缩归档文件。

您可以使用Apache Commons Compress implementation for tar

以这种方式创建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
压缩整个目录的

Here is a more thorough example

答案 1 :(得分:4)

GZip压缩流。通常,当人们将GZip与多个文件一起使用时,他们也会使用tar将它们拼凑在一起

您可以在此处找到java tar libarary:http://www.trustice.com/java/tar/

或者您可以使用Zip代替GZip