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

MAUS :- Simulador y Editor de exámenes para dispositivos móviles

MAUS :- Simulador y Editor de exámenes para dispositivos móviles

MAUS es una aplicación para dispositivos móviles con el Sistema Operativo Android que te permite realizar exámenes desde...

Alda: Lenguaje de programación para composición musical

Alda: Lenguaje de programación para composición musical

Alda es un lenguaje de programación desarrollado por Dave Yarwood el cual esta basado en texto para composición musical,...

Crear imagen dinamicamente y agregar a un objeto swing

Crear imagen dinamicamente y agregar a un objeto swing

Si bien se puede hacer uso de archivos de imagen (jpg, png, bmp, etc) en las aplicaciones java, también este te permite...

Pruebas instrumentadas con Espresso

Pruebas instrumentadas con Espresso

Espresso es un framework de testing propiedad de Google que está dirigido a desarrolladores que creen que las pruebas au...

Empaquetado de texturas en LibGDX

Empaquetado de texturas en LibGDX

Continuando con los tutoriales sobre LibGDX (Librería para el desarrollo de videojuegos), en esta ocasión veremos como e...

Subir imagen a un servidor web con REST/JSON

Subir imagen a un servidor web con REST/JSON

En este tutorial crearemos una sencilla aplicación para android que nos permitirá subir una imagen a un servidor web. La...

Comparte lo que sabes

Categorias

Últimas entradas

Existe una gran cantidad de contenido sobre productividad, trucos, consejos y trabajo y más. Pero, ¿Qué pasa con esos mo...

En este post te enseño a usar una herramienta de Inteligencia Artificial para animar tus fotografias y esto completament...

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

Herramientas

Generador de Enlaces a Whatsapp