English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

¿Cómo comprimir y descomprimir datos de archivos en Java?

Java proporciona dos clases, DeflaterOutputStream e InflaterInputStream, para comprimir y descomprimir datos.

Comprimir un archivo individual

Comprimir un archivo individual-

  • Creando pasando la ruta del archivo a comprimir en formato String como parámetro de su constructor.FileInputStreamel objeto.

  • Creando pasando la ruta del archivo de salida como parámetro de su constructor en formato String.FileOutputStreamel objeto.

  • Creando pasando el objeto FileOutputStream creado anteriormente como parámetro de su constructor.DeflaterOutputStreamel objeto.

  • Luego, leer el contenido del archivo de entrada y usarwrite()Métodos de la clase DeflaterOutputStream para escritura.

ejemplo

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.DeflaterOutputStream;
public class CompressingFiles {
   public static void main(String args[]) throws IOException {
      //instanciar FileInputStream-
      String inputPath = "D:\\ExampleDirectory\\logo.jpg";
      FileInputStream inputStream = new FileInputStream(inputPath);
      //Instanciar FileOutputStream-
      String outputPath = "D:\\ExampleDirectory\\compressedLogo.txt";
      FileOutputStream outputStream = new FileOutputStream(outputPath);
      //Instanciar DeflaterOutputStream-
      DeflaterOutputStream compresser = new DeflaterOutputStream(outputStream);
      int contents;
      while ((contents=inputStream.read())!=-1{
         compresser.write(contents);
      }
      compresser.close();
      System.out.println("El archivo está comprimido......-");
   }
}

Resultado de salida

El archivo está comprimido......-

Descomprimir el archivo comprimido

Descomprimir el archivo comprimido-

  • Creado pasando la ruta del archivo comprimido en formato String como parámetro de su constructor.FileInputStreamel objeto.

  • Creado pasando la ruta del archivo de salida (imagen sin comprimir) en formato String como parámetro de su constructor.FileOutputStreamel objeto.

  • creadel InflaterInputStreammediante la creación de los objetos anteriores,dentro de FileOutputStreamel objeto, como parámetro para su constructor.

  • luego, leerInflaterInputStreamel contenido del objeto, y usarwrite()métodos de la clase FileOutputStream para escribir.

ejemplo

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.InflaterInputStream;
public class DeCompressingFiles {
   public static void main(String args[]) throws IOException {
      StringinputPath ="D:\\ExampleDirectory\\compressed.txt";
      //instanciar FileInputStream-
      FileInputStream inputStream = new FileInputStream(inputPath);
      String outputpath = "D:\\ExampleDirectory\\output.jpg";
      FileOutputStream outputStream = new FileOutputStream(outputpath);
      InflaterInputStream decompresser = new InflaterInputStream(inputStream);
      int contents;
      while ((contents=decompresser.read())!?-1{
         outputStream.write(contents);
      }
      //cerrar archivo
      outputStream.close();
      
      -compressed......
   }
}

Resultado de salida

Archivo sin-compressed......