我需要创建一个包含多个文件的gzip存档,如何在ArchiveEntry
类没有java.util.zip.GZIPOutputStream
的情况下执行此操作?
答案 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
压缩整个目录的
答案 1 :(得分:4)
GZip压缩流。通常,当人们将GZip与多个文件一起使用时,他们也会使用tar将它们拼凑在一起
您可以在此处找到java tar libarary:http://www.trustice.com/java/tar/
或者您可以使用Zip代替GZip