logo

Failu saspiešana un atspiešana Java

Klases DeflaterOutputStream un InflaterInputStream ir nodrošinātas Java valodā, lai saspiestu un atspiestu faila saturu. Šīs klases nodrošina noderīgas metodes, ko var izmantot faila satura saspiešanai.

Faila saspiešana, izmantojot DeflaterOutputStream

Šī klase ievieš izvades straumes filtru datu saspiešanai “deflācijas” saspiešanas formātā. To izmanto arī par pamatu cita veida kompresijas filtriem, piemēram, GZIPOutputStream. Svarīgas metodes:
    tukša aizvēršana () : Ieraksta atlikušos saspiestos datus izvades straumē un aizver pamatā esošo straumi. aizsargāts tukšums deflate() :Ieraksta nākamo saspiesto datu bloku izvades straumē. tukša apdare () : Pabeidz saspiestu datu ierakstīšanu izvades straumē, neaizverot pamatā esošo straumi. void flush() : Izskalo saspiesto izvades straumi. void write(baits[] b int off int len) :Saspiestajā izvades straumē ieraksta baitu masīvu, kur off ir datu sākuma nobīde un len ir kopējais baitu skaits. nederīgs raksts (b int):Ieraksta baitu saspiestajā izvades straumē.
Darbības, lai saspiestu failu (fails 1)
  • Lai nolasītu datus, ievadiet failu FileInputStream ievades failu “file 1”.
  • Paņemiet izvades failu "file 2" un piešķiriet to FileOutputStream. Tas palīdzēs ierakstīt datus failā2.
  • Piešķiriet FileOutputStream deflaterOutputStream datu saspiešanai.
  • Tagad lasiet datus no FileInputStream un ierakstiet tos programmā DeflaterOutputStream. Tas saspiedīs datus un nosūtīs tos FileOutputStream, kas saglabā saspiestos datus izvades 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();  } } 

Faila atspiešana, izmantojot InflaterInputStream

Šī klase ievieš straumes filtru datu atspiešanai saspiešanas formātā “deflācija”. To izmanto arī par pamatu citiem dekompresijas filtriem, piemēram, GZIPInputStream. Svarīgas metodes:
    int pieejams() : Atgriež 0 pēc EOF sasniegšanas, pretējā gadījumā vienmēr atgriež 1. tukša aizvēršana () : Aizver ievades straumi un atbrīvo visus ar straumi saistītos sistēmas resursus. aizsargāts tukšuma aizpildījums () : Piepilda ievades buferi ar vairāk datu, ko atspiest. tukša atzīme (int readlimit): Atzīmē pašreizējo pozīciju ievades straumē. Būla atzīmeSupported() : Pārbauda, ​​vai ievades straume atbalsta atzīmēšanas un atiestatīšanas metodes. int lasīt() : Nolasa nesaspiestu datu baitu. int read(baits[] b int off int len) : Nolasa atspiestos datus baitu masīvā saspiestajā izvades straumē, kur off ir datu sākuma nobīde un len ir kopējais baitu skaits. nevar atiestatīt () : Pārvieto šo straumi uz pozīciju, kad šajā ievades straumē pēdējo reizi tika izsaukta atzīmēšanas metode.
Darbības, lai atspiestu failu
  • Fails ar nosaukumu “file2” tagad satur saspiestus datus, un mums no šī faila jāiegūst sākotnējie atspiestie dati.
  • Piešķiriet saspiesto failu “file2” failam FileInputStream. Tas palīdz nolasīt datus no faila2.
  • Piešķiriet izvades failu “file3” failam FileOutputStream. Tas palīdzēs ierakstīt nesaspiestus datus failā 3.
  • Tagad lasiet nesaspiestos datus no InflaterInputStream un ierakstiet tos FileOutputStream. Tas ierakstīs nesaspiestos datus failā 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();    } } 
  Izveidojiet viktorīnu