logo

Komprimering og dekomprimering av filer i Java

DeflaterOutputStream og InflaterInputStream  klasser er gitt i Java for å komprimere og dekomprimere filinnholdet. Disse klassene gir nyttige metoder som kan brukes til å komprimere filinnholdet.

Komprimering av en fil ved hjelp av DeflaterOutputStream

Denne klassen implementerer et utgangsstrømfilter for å komprimere data i "deflate"-komprimeringsformatet. Den brukes også som grunnlag for andre typer kompresjonsfiltre som GZIPOutputStream. Viktige metoder:
    void close() : Skriver gjenværende komprimerte data til utdatastrømmen og lukker den underliggende strømmen. beskyttet void deflate():Skriver neste blokk med komprimerte data til utdatastrømmen. void finish() : Fullfører å skrive komprimerte data til utdatastrømmen uten å lukke den underliggende strømmen. void flush(): Skyller den komprimerte utgangsstrømmen. void write(byte[] b int off int len):Skriver en rekke byte til den komprimerte utdatastrømmen der av er startforskyvningen av data og len er totalt antall byte. void skrive(int b):Skriver en byte til den komprimerte utdatastrømmen.
Trinn for å komprimere en fil (fil 1)
  • Ta en inndatafil 'fil 1' til FileInputStream for å lese data.
  • Ta utdatafilen 'fil 2' og tilordne den til FileOutputStream . Dette vil bidra til å skrive data inn i 'fil2'.
  • Tilordne FileOutputStream til DeflaterOutputStream for å komprimere dataene.
  • Les nå data fra FileInputStream og skriv dem inn i DeflaterOutputStream. Den vil komprimere dataene og sende dem til FileOutputStream som lagrer de komprimerte dataene i utdatafilen.
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();  } } 

Dekomprimering av en fil ved hjelp av InflaterInputStream

Denne klassen implementerer et strømfilter for å dekomprimere data i "deflate"-komprimeringsformatet. Den brukes også som grunnlag for andre dekompresjonsfiltre som GZIPInputStream. Viktige metoder:
    int tilgjengelig(): Returnerer 0 etter at EOF er nådd, ellers returnerer alltid 1. void close() : Lukker inndatastrømmen og frigjør eventuelle systemressurser knyttet til strømmen. beskyttet void fill(): Fyller inngangsbufferen med mer data for å dekomprimere. void mark (int readlimit): Markerer gjeldende posisjon i inndatastrømmen. boolesk markSupported() : Tester om inndatastrømmen støtter merke- og tilbakestillingsmetodene. int read(): Leser en byte med ukomprimerte data. int read(byte[] b int off int len): Leser dekomprimerte data til en rekke byte til den komprimerte utdatastrømmen der av er startforskyvningen av data og len er totalt antall byte. void reset() : Omplasserer denne strømmen til posisjonen da merkemetoden sist ble kalt på denne inngangsstrømmen.
Trinn for å dekomprimere en fil
  • Fil med navnet 'fil2' inneholder nå komprimerte data, og vi må hente originale dekomprimerte data fra denne filen.
  • Tilordne den komprimerte filen "file2" til FileInputStream. Dette hjelper deg med å lese data fra 'fil2'.
  • Tilordne utdatafilen 'file3' til FileOutputStream. Dette vil bidra til å skrive ukomprimerte data inn i 'fil3'.
  • Les nå ukomprimerte data fra InflaterInputStream og skriv dem inn i FileOutputStream. Dette vil skrive de ukomprimerte dataene til 'file3'.
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();    } } 
  Lag quiz