In diesem Artikel wird hauptsächlich die Verwendung von Java -verwandten Klassen zum Komprimieren von Dateien oder Ordnern vorgestellt.
ZLIB ist eine Datenkomprimierungsbibliothek, mit der reine Daten verarbeitet werden (unabhängig von der Quelle der Daten).
7z ist ein neues Komprimierungsformat, das derzeit das höchste Komprimierungsverhältnis aufweist.
GZIP ist ein Dateikomprimierungs -Tool (oder das vom Komprimierungswerkzeug erzeugte komprimierte Dateiformat) und dient zum Verarbeiten einzelner Dateien. GZIP verwendet ZLIB, wenn Sie Daten in einer Datei einziehen. Um Informationen im Zusammenhang mit Dateieigenschaften zu speichern, muss GZIP mehr Header -Inhalte in der komprimierten Datei (*.gz) sparen, und ZLIB muss dies nicht berücksichtigen. Gzip ist jedoch nur für eine einzige Datei geeignet, daher sind die Suffixe, die wir häufig auf Unix/Linux sehen, *.tar.gz oder *.tgz, was bedeutet, dass mehrere Dateien zuerst in eine einzige Datei mit TAR verpackt und dann mit GZIP komprimiert werden.
ZIP ist ein Format, das für die Komprimierung mehrerer Dateien geeignet ist (die entsprechenden Tools umfassen PKzip und Winzip usw.). Daher muss die ZIP -Datei Informationen zur Dateiverzeichnisstruktur weiter enthalten, die mehr Informationen als der Header von GZIP sind. Es ist jedoch zu beachten, dass das ZIP -Format eine Vielzahl von Komprimierungsalgorithmen annehmen kann. Die meisten unserer gemeinsamen Zip -Dateien werden mit dem ZLIB -Algorithmus nicht komprimiert, und das Format der komprimierten Daten unterscheidet sich stark von der von GZIP.
Daher sollten Sie unterschiedliche Komprimierungstechniken entsprechend Ihren spezifischen Anforderungen auswählen: Wenn Sie die Daten nur komprimieren/dekomprimieren müssen, können Sie sie direkt mit ZLIB implementieren. Wenn Sie GZIP -Formatdateien generieren oder die Komprimierungsergebnisse anderer Tools dekomprimieren müssen, müssen Sie GZIP oder ZIP und andere zugehörige Klassen verwenden, um es zu verarbeiten.
Abhängigkeit von Maven
<Depopenty> <gruppe> org.apache.commons </Groupid> <artifactId> Commons-compress </artifactId> <version> 1.12 </Version> </abhängig>
ZIP -Format
public static void Zip (String -Eingabe, String -Ausgabe, String -Name) löst Ausnahme aus {ZipoutputStream out = neuer zipoutputStream (neuer FileOutputStream (Ausgabe)); String [] paths = input.split ("// |"); Datei [] Dateien = neue Datei [Paths.length]; byte [] buffer = neues byte [1024]; für (int i = 0; i <paths.length; i ++) {Dateien [i] = neue Datei (Pfade [i]); } für (int i = 0; i <files.length; i ++) {FileInputStream fis = new FileInputStream (Dateien [i]); if (files.length == 1 && name! } else {out.putNextEntry (neu Zipentry (Dateien [i] .getName ())); } int len; // Lesen Sie den Inhalt der Datei, die Sie herunterladen und in die ZIP -Datei packen müssen, während ((len = fis.read (puffer))> 0) {out.write (Buffer, 0, len); } out.closeEntry (); fis.close (); } out.close (); } out.close (); } Gzip -Paket
public static void GZIP (String -Eingabe, String -Ausgabe, String -Name) löst Ausnahme aus {String compress_name = null; if (name! = null) {compress_name = name; } else {compress_name = new Datei (Eingabe) .getName (); } byte [] buffer = new Byte [1024]; Versuchen Sie {gzIpParameters gp = new gzIpParameters (); // Setzen Sie den Dateinamen in der komprimierten Datei gp.setFileName (compress_name); GzipCompressoroutputStream gcos = new gzipCompressoroutputStream (neuer FileOutputStream (Ausgabe), GP); FileInputStream fis = new FileInputStream (Eingabe); int Länge; while ((länge = fis.read (puffer))> 0) {gcos.write (puffer, 0, länge); } fis.close (); gcos.finish (); } catch (ioException ioe) {ioe.printstacktrace (); }} 7z Pack
public static void z7z (String -Eingabe, String -Ausgabe, String -Name) löst Ausnahme aus {try {siebenzOutputFile siebenzOutput = new SevenzOutputFile (neue Datei (Ausgabe)); SiebenzarchiveEntry -Eintrag = NULL; String [] paths = input.split ("// |"); Datei [] Dateien = neue Datei [Paths.length]; für (int i = 0; i <paths.length; i ++) {Dateien [i] = neue Datei (Pfade [i] .trim ()); } für (int i = 0; i <files.length; i ++) {bufferedInputStream input = null; ENGERT = NEU BEBERREDINPUTSTREAM (neuer FileInputStream (Pfade [i])); if (name! } else {Eintrag = siebenzoutput.CreatearchiveEntry (neue Datei (Pfade [i]), neue Datei (Pfade [i]). getName ()); } siebenzoutput.putarchiveEntry (Eintrag); byte [] buffer = neues byte [1024]; Int len; while ((len = interstream.read (puffer))> 0) {siebenzoutput.write (puffer, 0, len); } ENGERT.CLOSE (); siebenzoutput.closearchiveEntry (); } siebenzoutput.close (); } siebenzoutput.close (); } catch (ioException ioe) {System.out.println (ioe.toString () + "" + input); }} ZLIB -Paket
public static void zlib (String -Eingabe, String -Ausgabe) löst Ausnahme aus (// DeflateroutputStream dos = new DeflateroutputStream (neuer FileOutputStream (Ausgabe)); DeflateParameters dp = neue DeflateParameter (); dp.setwithzlibheader (true); DeflateCompressorOutputStream DCOS = New DeFlateCompressorOutputStream (New FileOutputStream (Ausgabe), DP); FileInputStream fis = new FileInputStream (Eingabe); int länge = (int) neue Datei (Eingabe) .Length (); Byte -Daten [] = neues Byte [Länge]; // intlänge; while ((length = fis.read (data))> 0) {dcos.write (Daten, 0, Länge); } fis.close (); dcos.finish (); DCOS.CLOSE (); }Ich hoffe, dieser Artikel wird Ihnen hilfreich sein. Dies ist alles für Sie, um den komprimierten und verpackten Inhalt der Java -Implementierung von ZIP-, GZIP-, 7Z- und ZLIB -Formaten einzuführen. Ich hoffe, dass alle weiterhin unserer Website folgen werden! Wenn Sie Java lernen möchten, können Sie diese Website weiter verfolgen.