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.*
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
Y si no obtuvimos ningún error la clase comprimirá el archivo y procederá a su descompresión.
enjoy!!!
HyperSQL DataBase (HSQLDB) es un moderno administrador de bases de datos relacionales, es portátil e implementado en jav[...]
Reproducir archivos de audio en nuestras aplicaciones android. Necesitamos IDE Eclipse y SDK Android instalado Un archiv[...]
Un algoritmo de búsqueda binaria se emplea para buscar un valor en particular en un arreglo previamente ordenado. Para i[...]
En este post aprenderemos los pasos básicos para construir una aplicación android con soporte multilenguaje, utilizaremo[...]
Los smartphone al no tener los típicos botones de los celulares, su pantalla es sensible al movimiento, esto se llama «t[...]
Hola 🙂 en esta ocasión un amigo del Brasil nos envía un proyecto java de una Urna Electrónica o Voto Electronico, desarr[...]