2012-05-18 13 views

Odpowiedz

4

GZip kompresuje strumień. Zwykle, gdy ludzie używają GZip z wielu plików, ale również korzystać z tar chrupać je razem

można znaleźć libarary tar java tutaj: http://www.trustice.com/java/tar/

Albo można użyć Zip zamiast GZip

11

Według Wikipedia entry na gzip:

Chociaż jego format pozwala również na wielokrotne takie strumienie być łączone (pliki spakowane są po prostu rozpakowane łączone jakby pierwotnie były to tylko jeden plik), gzip jest zwykle używany do kompresowania pojedynczych plików tylko .

To dlatego GZIPOutputStream nie obsługuje ArchiveEntry.

Zwykle wiele plików jest archiwizowanych w jeden z tar, a następnie kompresowane za pomocą gzip w celu utworzenia skompresowanego archiwum .tar.gz.

Można by stworzyć tar.gz w ten sposób za pomocą Apache Commons Compress implementation for 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 

Here is a more thorough example który kompresuje całych katalogów.