12

我需要创建一个包含多个文件的 gzip 存档,如果不能上课,我该怎么ArchiveEntryjava.util.zip.GZIPOutputStream

4

2 回答 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 回答