logo

Компресовање и декомпресовање датотека у Јави

Класе ДефлатерОутпутСтреам и ИнфлатерИнпутСтреам  су обезбеђене у Јави за компримовање и декомпресију садржаја датотеке. Ове класе пружају корисне методе које се могу користити за компримовање  садржаја датотеке.

Компресовање датотеке помоћу ДефлатерОутпутСтреам-а

Ова класа имплементира филтер излазног тока за компримовање података у 'дефлате' формату компресије. Такође се користи као основа за друге типове компресијских филтера као што је ГЗИПОутпутСтреам. Важне методе:
    воид цлосе(): Уписује преостале компресоване податке у излазни ток и затвара основни ток. заштићени воид дефлате() :Уписује следећи блок компресованих података у излазни ток. воид финисх(): Завршава писање компресованих података у излазни ток без затварања основног тока. воид флусх() : Испира компресовани излазни ток. воид врите(бите[] б инт офф инт лен) :Уписује низ бајтова у компримовани излазни ток где је офф почетни помак података, а лен укупан број бајтова. воид врите(инт б):Уписује бајт у компримовани излазни ток.
Кораци за компримовање датотеке (фајл 1)
  • Узмите улазну датотеку „датотека 1“ у ФилеИнпутСтреам за читање података.
  • Узмите излазну датотеку „датотека 2“ и доделите је ФилеОутпутСтреам. Ово ће помоћи да се подаци уписују у „филе2“.
  • Додели ФилеОутпутСтреам ДефлатерОутпутСтреам за компримовање података.
  • Сада прочитајте податке из ФилеИнпутСтреам-а и запишите их у ДефлатерОутпутСтреам. Он ће компримирати податке и послати их у ФилеОутпутСтреам који складишти компримиране податке у излазну датотеку.
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();  } } 

Декомпримовање датотеке помоћу ИнфлатерИнпутСтреам-а

Ова класа имплементира филтер тока за декомпримовање података у 'дефлате' формату компресије. Такође се користи као основа за друге филтере за декомпресију као што је ГЗИПИнпутСтреам. Важне методе:
    инт аваилабле(): Враћа 0 након што је ЕОФ достигнут, иначе увек враћа 1. воид цлосе(): Затвара улазни ток и ослобађа све системске ресурсе повезане са стримом. заштићена воид филл(): Пуни улазни бафер са више података за декомпресију. воид ознака (инт реадлимит) : Означава тренутну позицију у улазном току. боолеан маркСуппортед() : Тестира да ли улазни ток подржава методе означавања и ресетовања. инт реад(): Чита бајт некомпримованих података. инт реад(бите[] б инт офф инт лен) : Чита декомпримоване податке у низ бајтова у компримовани излазни ток где је офф почетни помак података, а лен укупан број бајтова. воид ресет() : Поново поставља овај ток на позицију у време када је метод означавања последњи пут позван на овом улазном току.
Кораци за декомпресију датотеке
  • Датотека са именом 'филе2' сада садржи компримоване податке и морамо да добијемо оригиналне декомпримоване податке из ове датотеке.
  • Доделите компримовану датотеку „филе2“ ФилеИнпутСтреам-у. Ово помаже при читању података из „филе2“.
  • Доделите излазну датотеку 'филе3' ФилеОутпутСтреам-у. Ово ће помоћи да се некомпримовани подаци запишу у „филе3“.
  • Сада прочитајте некомпримоване податке из ИнфлатерИнпутСтреам-а и запишите их у ФилеОутпутСтреам. Ово ће записати некомпримоване податке у „филе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();    } } 
  Креирај квиз