Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Compresión y descompresión de archivos con GZIP

Compresión y descompresión de archivos con GZIP

Autor jc mouse miércoles, enero 30, 2019

En este post veremos un ejemplo de como comprimir y descomprimir archivos con el método de compresión GZIP  y el paquete de Java java.util.zip.*

gzip icon

java.util.zip: Este paquete ofrece clases para leer y escribir los formatos de archivo ZIP y GZIP estándar. También incluye clases para comprimir y descomprimir datos usando el algoritmo de compresión DEFLATE, que es usado por los formatos de archivo ZIP y GZIP. Además, tiene clases para calcular las sumas de comprobación CRC-32 y Adler-32 de flujos de entrada arbitrarios.

Nuestro proyecto consiste en una clase con dos métodos tanto para comprimir como descomprimir archivos.  La clase es la siguiente:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
/**
 * @see https://www.jc-mouse.net
 * @author mouse
 */
public class DemoGZIP {

    private final byte[] BUFFER = new byte[1024];

    /**
     * @param archivo Archivo a comprimir
     *      El archivo se comprime con el mismo nombre del archivo origen seguido de la extension *.zip
     * @return boolean 
     *      TRUE tuvo exito
     *      FALSE no se pudo comprimir
     */
    public boolean comprimir(File archivo) {                
        try (GZIPOutputStream  out = new GZIPOutputStream (new FileOutputStream(archivo.getAbsolutePath() + ".zip"));
                FileInputStream in = new FileInputStream(archivo)) {
            int len;
            while ((len = in.read(BUFFER)) != -1) {
                out.write(BUFFER, 0, len);
            }
            out.close();
        } catch (IOException ex) {
            System.err.println(ex.getMessage());
            return false;
        }
        return true;
    }

    /**
     * @param archivo Archivo a comprimir de la forma archivo.extension.zip
     * @return boolean 
     *      TRUE tuvo exito
     *      FALSE no se pudo descomprimir
     */
    public boolean descomprimir(File archivo) {
        //extrae la extension *.zip
        String salida = archivo.getAbsolutePath().replaceFirst("[.][^.]+$", "");        
        try (GZIPInputStream in = new GZIPInputStream(new FileInputStream(archivo));
                FileOutputStream out = new FileOutputStream(salida)) {            
            int len;
            while ((len = in.read(BUFFER)) != -1) {
                out.write(BUFFER, 0, len);
            }
            out.close();
        } catch (IOException ex) {      
            System.err.println(ex.getMessage());
            return false;
        }
        return true;
    }

}

Para probar nuestra clase, podemos hacerlo de la siguiente manera:

        DemoGZIP demoGZIP = new DemoGZIP();
        if(demoGZIP.comprimir(new File("E:\\tmp\\presentacion.pptx"))){
            if(demoGZIP.descomprimir(new File("E:\\tmp\\presentacion.pptx.zip"))){
                System.out.println("completado...");
            }
        }

Esto creara un archivo comprimido “presentacion.pptx.zip” como podemos ver a continuación

gzip java file

Y si no obtuvimos ningún error la clase comprimirá el archivo y procederá a su descompresión.

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

CUF: Código Único de Factura

CUF: Código Único de Factura

Este 2019 se implementara en Bolivia un nuevo Sistema de Facturación Electrónica con nuevas características y medidas de...

Ejecutables con Launch4J

Ejecutables con Launch4J

Launch4j es un software OpenSource hecho en Java que permite crear ejecutables para programas escritos en ese mismo leng...

Gráfico de columnas con iReport

Gráfico de columnas con iReport

El gráfico de columnas es uno  tipo de gráfico que nos permite representar fácilmente la cantidad de veces que ocurre un...

Como capturar cambios del Slider en JavaFX

Como capturar cambios del Slider en JavaFX

En este tutorial veremos como usar el componente Slider de JavaFX , capturas los cambios que realice el usuario y con es...

Métodos GET y POST en RestFul y JSON

Métodos GET y POST en RestFul y JSON

En este post veremos como enviar solicitudes GET y POST a un API RestFul  desde un dispositivo con android. Nuestra apli...

Leer Código QR desde un archivo de imagen

Leer Código QR desde un archivo de imagen

Los códigos QR del inglés Quick Response Code o código de respuesta rápida es un tipo de código para el almacenamiento d...

Comparte lo que sabes

Categorias

Últimas entradas

Los números narcisistas o números de Armstrong son aquellos números enteros positivos  cuya suma de las n-ésimas potenci...

En la convención de Chain React  en Portland (Oregon), Marc Horowitz ingeniero de software en Facebook presentó el motor...

En un post anterior [Introducción a VueJS framework para el desarrollo FrontEnd] realizamos una breve introducción a Vue...

La programación y la electrónica están a la orden del día. Cada vez son más importantes y prácticamente forman parte de...

Android Bolivia

MAUS