12

内部に複数のファイルを含む gzip アーカイブを作成する必要がありArchiveEntryますjava.util.zip.GZIPOutputStream

4

2 に答える 2

13

ウィキペディアのエントリによるとgzip

そのファイル形式では複数のストリームを連結することもできますが (圧縮されたファイルは、元は 1 つのファイルであるかのように連結されて解凍されます)、gzip は通常、単一のファイルのみを圧縮するために使用されます。

GZIPOutputStreamこれがをサポートしない理由ArchiveEntryです。

通常、複数のファイルを で 1 つにアーカイブしtar、 で圧縮しgzipて圧縮アーカイブを生成し.tar.gzます。

の実装をtar.gz使用して、この方法で を作成できます。Apache Commons Compresstar

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/ にあります

または、GZip の代わりに Zip を使用できます

于 2012-05-18T14:02:36.880 に答える