logo

Failų glaudinimas ir išglaudinimas Java

Klasės „DeflaterOutputStream“ ir „InflaterInputStream“ pateikiamos „Java“, kad būtų galima suspausti ir išskleisti failo turinį. Šiose klasėse pateikiami naudingi metodai, kuriuos galima naudoti failo turiniui suglaudinti.

Failo suglaudinimas naudojant DeflaterOutputStream

Ši klasė įgyvendina išvesties srauto filtrą, skirtą duomenims suspausti glaudinimo formatu „defliuoti“. Jis taip pat naudojamas kaip kitų tipų suspaudimo filtrų, tokių kaip GZIPOutputStream, pagrindas. Svarbūs metodai:
    tuščias uždarymas () : Įrašo likusius suglaudintus duomenis į išvesties srautą ir uždaro pagrindinį srautą. apsaugotas tuščias deflate () :Į išvesties srautą įrašomas kitas suspaustų duomenų blokas. tuščia apdaila (): Baigia rašyti suglaudintus duomenis į išvesties srautą neuždarydamas pagrindinio srauto. void flush() : Išplauna suspaustą išvesties srautą. void write(baitas[] b int off int len) :Į suglaudintą išvesties srautą įrašo baitų masyvą, kur off yra duomenų pradžios poslinkis, o len yra bendras baitų skaičius. tuščias rašymas (b tarpas):Įrašo baitą į suspaustą išvesties srautą.
Failo suglaudinimo veiksmai (1 failas)
  • Norėdami nuskaityti duomenis, perkelkite į „FileInputStream“ įvesties failą „1 failas“.
  • Paimkite išvesties failą „2 failas“ ir priskirkite jį „FileOutputStream“. Tai padės įrašyti duomenis į „file2“.
  • Priskirkite FileOutputStream prie „DeflaterOutputStream“, kad suglaudintumėte duomenis.
  • Dabar skaitykite duomenis iš FileInputStream ir įrašykite juos į DeflaterOutputStream. Jis suglaudins duomenis ir nusiųs juos į FileOutputStream, kuris saugo suglaudintus duomenis į išvesties failą.
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();  } } 

Failo išglaudinimas naudojant InflaterInputStream

Ši klasė įgyvendina srauto filtrą, skirtą duomenims išspausti glaudinimo formatu „defliuoti“. Jis taip pat naudojamas kaip kitų dekompresijos filtrų, tokių kaip GZIPInputStream, pagrindas. Svarbūs metodai:
    int prieinama() : Grąžina 0 pasiekus EOF, kitu atveju visada grąžina 1. tuščias uždarymas () : Uždaromas įvesties srautas ir išleidžiami visi su srautu susiję sistemos ištekliai. apsaugotas tuštumos užpildymas () : Pripildo įvesties buferį daugiau duomenų, kuriuos reikia išspausti. negaliojantis ženklas (int readlimit): Pažymi dabartinę padėtį įvesties sraute. loginis ženklasSupported() : Tikrinama, ar įvesties srautas palaiko žymėjimo ir nustatymo iš naujo metodus. int read() : Nuskaito baitą nesuspaustų duomenų. int read(baitas[] b int off int len) : Nuskaito išspaustus duomenis į suspausto išvesties srauto baitų masyvą, kur off yra duomenų pradžios poslinkis, o len yra bendras baitų skaičius. negaliojantis atstatymas () : Perkelia šio srauto padėtį į padėtį, kai paskutinį kartą šiame įvesties sraute buvo iškviestas žymėjimo metodas.
Failo išskleidimo veiksmai
  • Faile pavadinimu „file2“ dabar yra suspaustų duomenų, todėl iš šio failo turime gauti originalius išspaustus duomenis.
  • Suspaustą failą „file2“ priskirkite „FileInputStream“. Tai padeda nuskaityti duomenis iš „file2“.
  • Priskirkite išvesties failą „file3“ prie „FileOutputStream“. Tai padės įrašyti nesuspaustus duomenis į „failą3“.
  • Dabar skaitykite nesuglaudintus duomenis iš InflaterInputStream ir įrašykite juos į FileOutputStream. Tai įrašys nesuspaustus duomenis į „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();    } } 
  Sukurti viktoriną