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!!!
Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelap[...]
El gráfico de columnas es uno tipo de gráfico que nos permite representar fácilmente la cantidad de veces que ocurre un[...]
En este tutorial crearemos una aplicación sencilla para activar y desactivar el bluetooth de nuestros teléfonos intelige[...]
HyperSQL DataBase (HSQLDB) es un moderno administrador de bases de datos relacionales, es portátil e implementado en jav[...]
En este videoTutorial veremos la forma mas sencilla de crear un instalador para programas hechos en Java utilizando el p[...]
Entre las muchas aplicaciones que hay en la playstore de google están las galerías de fotos de chicas 🙂 que tantos nos e[...]