Potrzebuję utworzyć archiwum gzip z wieloma plikami wewnątrz, jak mogę to zrobić bez ArchiveEntry
dostępnej dla klasy java.util.zip.GZIPOutputStream
?Archiwum gzip z wieloma plikami wewnątrz
Odpowiedz
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
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.