logo

Komprimieren und Dekomprimieren von Dateien in Java

Die Klassen DeflaterOutputStream und InflaterInputStream werden in Java bereitgestellt, um den Dateiinhalt zu komprimieren und zu dekomprimieren. Diese Klassen bieten nützliche Methoden, die zum Komprimieren des Dateiinhalts verwendet werden können.

Komprimieren einer Datei mit DeflaterOutputStream

Diese Klasse implementiert einen Ausgabestreamfilter zum Komprimieren von Daten im Komprimierungsformat „deflate“. Es wird auch als Grundlage für andere Arten von Komprimierungsfiltern wie GZIPOutputStream verwendet. Wichtige Methoden:
    void close() : Schreibt verbleibende komprimierte Daten in den Ausgabestream und schließt den zugrunde liegenden Stream. protected void deflate() :Schreibt den nächsten Block komprimierter Daten in den Ausgabestream. void finish() : Beendet das Schreiben komprimierter Daten in den Ausgabestream, ohne den zugrunde liegenden Stream zu schließen. void flush() : Leert den komprimierten Ausgabestream. void write(byte[] b int off int len):Schreibt ein Array von Bytes in den komprimierten Ausgabestream, wobei off der Startoffset der Daten und len die Gesamtzahl der Bytes ist. void write(int b) :Schreibt ein Byte in den komprimierten Ausgabestream.
Schritte zum Komprimieren einer Datei (Datei 1)
  • Übernehmen Sie eine Eingabedatei „Datei 1“ zu FileInputStream, um Daten zu lesen.
  • Nehmen Sie die Ausgabedatei „Datei 2“ und weisen Sie sie FileOutputStream zu. Dies hilft beim Schreiben von Daten in „Datei2“.
  • Weisen Sie FileOutputStream DeflaterOutputStream zu, um die Daten zu komprimieren.
  • Lesen Sie nun Daten aus FileInputStream und schreiben Sie sie in DeflaterOutputStream. Die Daten werden komprimiert und an FileOutputStream gesendet, der die komprimierten Daten in der Ausgabedatei speichert.
Java
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.Deflater; import java.util.zip.DeflaterOutputStream; class zip {  public static void main(String[] args) throws IOException {  //Assign the original file : file to  //FileInputStream for reading data  FileInputStream fis=new FileInputStream('file1');  //Assign compressed file:file2 to FileOutputStream  FileOutputStream fos=new FileOutputStream('file2');  //Assign FileOutputStream to DeflaterOutputStream  DeflaterOutputStream dos=new DeflaterOutputStream(fos);  //read data from FileInputStream and write it into DeflaterOutputStream  int data;  while ((data=fis.read())!=-1)  {  dos.write(data);  }  //close the file  fis.close();  dos.close();  } } 

Dekomprimieren einer Datei mit InflaterInputStream

Listenzeichenfolge Java
Diese Klasse implementiert einen Stream-Filter zum Dekomprimieren von Daten im Komprimierungsformat „deflate“. Es wird auch als Grundlage für andere Dekomprimierungsfilter wie GZIPInputStream verwendet. Wichtige Methoden:
    int verfügbar() : Gibt 0 zurück, nachdem EOF erreicht wurde, andernfalls wird immer 1 zurückgegeben. void close() : Schließt den Eingabestream und gibt alle mit dem Stream verknüpften Systemressourcen frei. protected void fill() : Füllt den Eingabepuffer mit mehr Daten zum Dekomprimieren. void mark(int readlimit) : Markiert die aktuelle Position im Eingabestream. boolean markSupported() : Testet, ob der Eingabestream die Markierungs- und Reset-Methoden unterstützt. int read() : Liest ein Byte unkomprimierter Daten. int read(byte[] b int off int len) : Liest dekomprimierte Daten in ein Array von Bytes in den komprimierten Ausgabestream ein, wobei off der Startoffset der Daten und len die Gesamtzahl der Bytes ist. void reset() : Positioniert diesen Stream an der Position zum Zeitpunkt des letzten Aufrufs der Markierungsmethode für diesen Eingabestream neu.
Schritte zum Dekomprimieren einer Datei
  • Die Datei mit dem Namen „Datei2“ enthält jetzt komprimierte Daten und wir müssen die ursprünglichen dekomprimierten Daten aus dieser Datei abrufen.
  • Weisen Sie FileInputStream die komprimierte Datei „file2“ zu. Dies hilft beim Lesen von Daten aus „Datei2“.
  • Weisen Sie FileOutputStream die Ausgabedatei „file3“ zu. Dies hilft dabei, unkomprimierte Daten in „Datei3“ zu schreiben.
  • Lesen Sie nun unkomprimierte Daten aus InflaterInputStream und schreiben Sie sie in FileOutputStream. Dadurch werden die unkomprimierten Daten in „Datei3“ geschrieben.
Java
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.InflaterInputStream; //Uncompressing a file using an InflaterInputStream class unzip {  public static void main(String[] args) throws IOException {  //assign Input File : file2 to FileInputStream for reading data  FileInputStream fis=new FileInputStream('file2');  //assign output file: file3 to FileOutputStream for reading the data  FileOutputStream fos=new FileOutputStream('file3');    //assign inflaterInputStream to FileInputStream for uncompressing the data  InflaterInputStream iis=new InflaterInputStream(fis);    //read data from inflaterInputStream and write it into FileOutputStream   int data;  while((data=iis.read())!=-1)  {  fos.write(data);  }    //close the files  fos.close();  iis.close();    } } 
  Quiz erstellen