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!!!
Entre las muchas aplicaciones que hay en la playstore de google están las galerías de fotos de chicas 🙂 que tantos nos e[...]
Mauricio Foronda, desarrollador y cientista en datos, presenta una aplicación web interactiva que permite al público apr[...]
En este tutorial crearemos un componente swing para java que podremos usar en cualquiera de nuestros proyectos, el compo[...]
Java2d nos permite manipular imagenes y asi poder crear animaciones sencillas como muestra el siguiente video. Puedes de[...]
Una de las novedades de Java 9 y 10 aunque por el momento en modo de prueba (jdk.incubator.http) es el Cliente HTTP el c[...]
Operador de Complemento bit a bit unario Entre los operadores a nivel de bits de uso más común en java tenemos al operad[...]