gzip存档里面有多个文件

ira*_*ira 10 java compression gzip

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

Arj*_*kar 12

按照维基百科条目上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
Run Code Online (Sandbox Code Playgroud)

这是一个压缩整个目录的更全面的示例.


Con*_*Del 5

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

你可以在这里找到一个 java tar 库:http : //www.trustice.com/java/tar/

或者你可以使用 Zip 而不是 GZip