Clase GZIPOutputStream en Java

El paquete java.util.zip proporciona clases para comprimir y descomprimir el contenido del archivo. Las clases FileInputStream, FileOutputStream y GZIPOutputStream se proporcionan en Java para comprimir y descomprimir los archivos. La clase GZIPOutputStream es útil para escribir datos comprimidos en formato de archivo GZIP . Sin embargo, GZIP no es una herramienta zip, solo se usa para comprimir un archivo en formato «.gz», no para comprimir varios archivos en un solo archivo.

Los constructores y la acción correspondiente realizada es la siguiente: 

  • GZIPOutputStream (OutputStream out): crea un nuevo flujo de salida con un tamaño de búfer predeterminado
  • GZIPOutputStream(OutputStream out, boolean syncFlush): crea un nuevo flujo de salida con un tamaño de búfer predeterminado y el modo de descarga especificado.
  • GZIPOutputStream (OutputStream out, int size): crea un nuevo flujo de salida con el tamaño de búfer especificado
  • GZIPOutputStream (OutputStream out, int size, boolean syncFlush): crea un nuevo flujo de salida con el tamaño de búfer especificado y el modo de descarga

Discutamos los métodos importantes involucrados, que son los siguientes:

  • void write(byte[] buf, int off, int len): escribe una array de bytes en el flujo de salida comprimido.

Parámetros:  Se necesitan 3 parámetros, a saber, los siguientes:

  • buf: Datos a escribir
  • off: Compensación de inicio de los datos
  • len: longitud de los datos

Excepción: IOException: si se ha producido un error de E/S

Nota: el método finish() termina de escribir datos comprimidos en el flujo de salida sin cerrar el flujo subyacente.

Implementación: tenemos un archivo de texto en D:/Myfolder/New.txt, y «Hello World» está escrito en este archivo de texto. Estamos comprimiendo este archivo de texto (New.txt) y generando el archivo GZip en la misma carpeta. También se representa pictóricamente a continuación de la siguiente manera:

Ejemplo 

Java

// Java Program to Illustrate GZIPOutputStream class
  
// Importing required classes
import java.io.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
  
// Main class
class GFG {
  
    // Main driver method
    public static void main(String[] args) throws Exception
    {
        // Existing file path
        String file = "D:/Myfolder/New.txt";
        
        // Path where we want the compression of the file
        String gzipFile = "D:/Myfolder/compress.gz";
  
        // Reading the text file
        FileInputStream fis = new FileInputStream(file);
        
        // Creating the compressed file
        FileOutputStream fos
            = new FileOutputStream(gzipFile);
        
        // Object of Fileoutstream passed
        GZIPOutputStream gzipOS = new GZIPOutputStream(fos);
  
        byte[] buffer = new byte[1024];
  
        int len;
  
        // Writing the data to file until -1 reached(End of
        // file)
        while ((len = fis.read(buffer)) != -1) {
  
            gzipOS.write(buffer, 0, len);
        }
  
        // Closing the resources
        // using standard close() method
        gzipOS.close();
        fos.close();
        fis.close();
  
        // Display message on the console in order to
        // illustrate successful execution of the program
        System.out.println("File successfully compressed");
    }
}

Producción:

File successfully compressed

Después de ejecutar el programa anterior, comprimirá el archivo generado que se puede representar desde la instantánea a continuación comparándolo con la instantánea de muestra anterior.

Publicación traducida automáticamente

Artículo escrito por karangarg218 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *