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!!!
En este tutorial, veremos un poco más de lo que son las texturas en libGDX y dos maneras de añadirlas a nuestros juegos,[...]
Cuando se almacenan imágenes en una aplicación java y se desea después a modo de registro buscar estas y cargarlas en al[...]
Necesitamos: Android Studio 2 tipos de fuente TTF Agregar Archivo de fuente al proyecto Paso 1: Crear carpeta assets Cli[...]
Java 8 trae consigo una nueva versión del motor de JavaScript llamada Nashorn, este motor introduce mejoras de rendimien[...]
Oi galera, en esta oportunidad les traigo una curiosidad que encontré por casualidad perdiendo el tiempo en Internet, se[...]
Jasypt es una biblioteca java que permite agregar capacidades básicas de encriptación a proyectos con el mínimo esfuerzo[...]