gzip存档里面有多个文件
我需要创建一个包含多个文件的gzip存档,如何在没有ArchiveEntry
可用于java.util.zip.GZIPOutputStream
类的情况下执行此操作?
根据维基百科上的gzip
条目 :
虽然它的文件格式也允许连接多个这样的流(压缩文件只是解压缩连接,好像它们原来是一个文件),gzip通常用于压缩单个文件。
这就是GZIPOutputStream
不支持ArchiveEntry
。
通常,使用tar
多个文件存档到一个文件中,然后使用gzip
压缩以生成.tar.gz
压缩存档。
你可以通过使用tar
的Apache Commons Compress
实现以这种方式创建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
这是一个压缩整个目录的更全面的示例 。
GZip压缩流。 通常,当人们将GZip与多个文件一起使用时,他们也会使用tar将它们拼凑在一起
你可以在这里找到一个java tar libarary: http : //www.trustice.com/java/tar/
或者您可以使用Zip而不是GZip