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!!!
Hola 🙂 publicando de tiempo les dejo esta chiti librería java para convertir números a su equivalente literal. La librer[...]
Si necesitamos mostrar gráficos estadísticos en nuestras aplicaciones android, contamos con muchas librerías disponibles[...]
Agregar una imagen a un jpanel o a un jframe no es complicado pero para un programador novato puede convertirse en todo[...]
Vue.js es un framework progresivo para la creación de interfaces de usuario de una sola página creado por Evan You. Pero[...]
Material Design introduce una nueva forma de mostrar notificaciones al usuario, estos son los snackbar, similares a los[...]
Como dice un viejo dicho, «La practica hace al maestro» y en el mundo de la programación no es diferente, por eso siempr[...]