我需要创建一个包含多个文件的 gzip 存档,如果不能上课,我该怎么ArchiveEntry
做java.util.zip.GZIPOutputStream
?
问问题
14935 次
2 回答
13
根据维基百科条目gzip
:
虽然它的文件格式还允许连接多个这样的流(压缩文件只是简单地解压缩连接,就好像它们最初是一个文件一样),但 gzip 通常只用于压缩单个文件。
这就是GZIPOutputStream
不支持的原因ArchiveEntry
。
通常,多个文件用 存档为一个tar
,然后用 压缩gzip
以生成.tar.gz
压缩存档。
您可以tar.gz
通过使用以下Apache Commons Compress
实现以tar
这种方式创建:
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
于 2012-05-18T14:10:32.527 回答
6
GZip 压缩流。通常,当人们使用 GZip 处理多个文件时,他们也会使用 tar 将它们一起咀嚼
你可以在这里找到一个 java tar 库:http ://www.trustice.com/java/tar/
或者你可以使用 Zip 而不是 GZip
于 2012-05-18T14:02:36.880 回答