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!!!
Google abre las puertas de Google Open Source un nuevo sitio web que une todos sus proyectos de «Código Abierto» que ha[...]
Entre las muchas aplicaciones que hay en la playstore de google están las galerías de fotos de chicas 🙂 que tantos nos e[...]
De las pocas herramientas disponibles entre librerías, frameworks, engines, etc para el desarrollo de videojuegos en len[...]
Tink es una biblioteca de cifrado desarrollada por un grupo de criptógrafos e ingenieros de seguridad de Google lanzado[...]
Gson es una biblioteca de código abierto para Java desarrollado por Google Inc que permite la serialización y deserializ[...]
En ocasiones debemos insertar varios registros a nuestra base de datos desde nuestra aplicación java y lo que usualmente[...]