logo

Tiedostojen pakkaaminen ja purkaminen Javassa

DeflaterOutputStream- ja InflaterInputStream-luokat tarjotaan Javassa tiedoston sisällön pakkaamiseen ja purkamiseen. Nämä luokat tarjoavat hyödyllisiä menetelmiä, joita voidaan käyttää tiedoston sisällön pakkaamiseen.

Tiedoston pakkaaminen DeflaterOutputStreamin avulla

Tämä luokka toteuttaa lähtövirtasuodattimen tietojen pakkaamiseksi "deflate"-pakkausmuodossa. Sitä käytetään myös muun tyyppisten pakkaussuodattimien, kuten GZIPOutputStream, perustana. Tärkeät menetelmät:
    void close() : Kirjoittaa jäljellä olevan pakatun tiedon lähtövirtaan ja sulkee alla olevan virran. suojattu void deflate() :Kirjoittaa seuraavan pakatun datan lohkon lähtövirtaan. tyhjä viimeistely() : Lopettaa pakatun tiedon kirjoittamisen lähtövirtaan sulkematta alla olevaa tietovirtaa. void flush() : Huuhtelee pakatun lähtövirran. void write(byte[] b int off int len) :Kirjoittaa joukon tavuja pakattuun lähtövirtaan, jossa off on datan aloitussiirtymä ja len on tavujen kokonaismäärä. tyhjä kirjoitus (int b):Kirjoittaa tavun pakattuun lähtövirtaan.
Tiedoston pakkaamisen vaiheet (tiedosto 1)
  • Ota tulostiedosto 'file 2' ja määritä se FileOutputStreamiin. Tämä auttaa tietojen kirjoittamisessa tiedostoon 2.
  • Määritä FileOutputStream DeflaterOutputStreamiin tietojen pakkaamista varten.
  • Lue nyt tiedot FileInputStreamista ja kirjoita ne DeflaterOutputStreamiin. Se pakkaa tiedot ja lähettää ne FileOutputStreamiin, joka tallentaa pakatut tiedot tulostiedostoon.
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();  } } 

Tiedoston purkaminen InflaterInputStreamin avulla

Tämä luokka toteuttaa stream-suodattimen tietojen purkamiseksi "deflate"-pakkausmuodossa. Sitä käytetään myös muiden purkusuodattimien, kuten GZIPInputStream, perustana. Tärkeitä menetelmiä:
    int saatavilla() : Palauttaa 0, kun EOF on saavutettu, muuten aina palauttaa 1. void close() : Sulkee syöttövirran ja vapauttaa kaikki tietovirtaan liittyvät järjestelmäresurssit. suojattu void fill() : Täyttää syöttöpuskuriin lisää purettavia tietoja. tyhjä merkki (int lukurajoitus): Merkitsee nykyisen sijainnin syöttövirrassa. Boolean markSupported() : Testaa, tukeeko syöttövirta merkintä- ja palautusmenetelmiä. int read() : Lukee tavun pakkaamatonta dataa. Lukee puretut tiedot tavujoukoksi pakattuun lähtövirtaan, jossa off on datan aloitussiirtymä ja len on tavujen kokonaismäärä. void reset() : Asettaa tämän virran uudelleen sijaintiin, jolloin merkkimenetelmää kutsuttiin viimeksi tässä syöttövirrassa.
Ohjeet tiedoston purkamiseen
  • Tiedosto nimeltä "file2" sisältää nyt pakattua tietoa, ja meidän on hankittava alkuperäiset puretut tiedot tästä tiedostosta.
  • Määritä pakattu tiedosto 'file2' FileInputStreamille. Tämä auttaa lukemaan tietoja tiedostosta 2.
  • Määritä tulostiedosto 'file3' FileOutputStreamille. Tämä auttaa kirjoittamaan pakkaamatonta tietoa tiedostoon 3.
  • Lue nyt pakkaamattomat tiedot InflaterInputStreamista ja kirjoita ne FileOutputStreamiin. Tämä kirjoittaa pakkaamattomat tiedot tiedostoon 3.
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();    } } 
  Luo tietokilpailu