logo

Compactando e descompactando arquivos em Java

As classes DeflaterOutputStream e InflaterInputStream são fornecidas em Java para compactar e descompactar o conteúdo do arquivo. Essas classes fornecem métodos úteis que podem ser usados ​​para compactar o conteúdo do arquivo.

Compactando um arquivo usando DeflaterOutputStream

Esta classe implementa um filtro de fluxo de saída para compactar dados no formato de compactação 'deflate'. Também é usado como base para outros tipos de filtros de compactação, como GZIPOutputStream. Métodos importantes:
    void fechar(): Grava os dados compactados restantes no fluxo de saída e fecha o fluxo subjacente. vazio protegido deflate():Grava o próximo bloco de dados compactados no fluxo de saída. acabamento vazio(): Conclui a gravação de dados compactados no fluxo de saída sem fechar o fluxo subjacente. void flush() : Libera o fluxo de saída compactado. void write(byte[] b int off int len):Grava uma matriz de bytes no fluxo de saída compactado, onde off é o deslocamento inicial dos dados e len é o número total de bytes. void escrever (int b):Grava um byte no fluxo de saída compactado.
Etapas para compactar um arquivo (arquivo 1)
  • Leve um arquivo de entrada ‘arquivo 1’ para FileInputStream para leitura de dados.
  • Pegue o arquivo de saída ‘arquivo 2’ e atribua-o a FileOutputStream . Isso ajudará a gravar dados em ‘file2’.
  • Atribua FileOutputStream a DeflaterOutputStream para compactar os dados.
  • Agora leia os dados de FileInputStream e grave-os em DeflaterOutputStream. Ele compactará os dados e os enviará para FileOutputStream, que armazena os dados compactados no arquivo de saída.
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();  } } 

Descompactando um arquivo usando InflaterInputStream

Esta classe implementa um filtro de fluxo para descompactar dados no formato de compactação 'deflate'. Também é usado como base para outros filtros de descompressão, como GZIPInputStream. Métodos importantes:
    int disponível(): Retorna 0 após EOF ter sido alcançado, caso contrário sempre retorna 1. void fechar(): Fecha o fluxo de entrada e libera quaisquer recursos do sistema associados ao fluxo. preenchimento de vazio protegido(): Preenche o buffer de entrada com mais dados para descompactar. marca nula (int readlimit): Marca a posição atual no fluxo de entrada. marca booleana suportada(): Testa se o fluxo de entrada suporta os métodos mark e reset. int leitura(): Lê um byte de dados não compactados. int read(byte[] b int off int len): Lê dados descompactados em uma matriz de bytes para o fluxo de saída compactado, onde off é o deslocamento inicial dos dados e len é o número total de bytes. void reset() : Reposiciona esse fluxo para a posição no momento em que o método mark foi chamado pela última vez neste fluxo de entrada.
Etapas para descompactar um arquivo
  • O arquivo com o nome ‘file2’ agora contém dados compactados e precisamos obter os dados descompactados originais deste arquivo.
  • Atribua o arquivo compactado ‘file2’ a FileInputStream. Isso ajuda a ler os dados do ‘arquivo2’.
  • Atribua o arquivo de saída ‘file3’ a FileOutputStream. Isso ajudará a gravar dados descompactados em ‘file3’.
  • Agora leia os dados não compactados do InflaterInputStream e grave-os no FileOutputStream. Isso gravará os dados descompactados em ‘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();    } } 
  Criar questionário