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