13 Stimmen

gzip-Archiv mit mehreren Dateien darin

Ich muss ein gzip-Archiv mit mehreren Dateien darin erstellen, wie kann ich dies tun, ohne ArchiveEntry verfügbar für java.util.zip.GZIPOutputStream Klasse?

15voto

ArjunShankar Punkte 22302

Según la Wikipedia-Eintrag auf gzip :

Obwohl das Dateiformat auch mehrere solcher Streams zulässt konkateniert werden können (gezippte Dateien werden einfach dekomprimiert und konkateniert, als ob als wären sie ursprünglich eine einzige Datei), wird gzip normalerweise verwendet, um nur einzelne Dateien.

Das ist der Grund GZIPOutputStream unterstützt nicht ArchiveEntry .

Normalerweise werden mehrere Dateien in einer einzigen Datei archiviert. tar dann komprimiert mit gzip zur Herstellung eines .tar.gz komprimiertes Archiv.

Sie könnten eine tar.gz auf diese Weise durch die Verwendung der Apache Commons Compress Umsetzung für 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

Hier ist ein ausführlicheres Beispiel die ganze Verzeichnisse komprimiert.

6voto

ControlAltDel Punkte 32085

GZip komprimiert einen Stream. Wenn Leute GZip mit mehreren Dateien verwenden, benutzen sie normalerweise auch tar, um sie zusammenzufassen

Eine Java-Tar-Library finden Sie hier: http://www.trustice.com/java/tar/

Oder Sie könnten Zip statt GZip verwenden

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X