Crear ZIP en JAVA

En esta ocasión les entregaré una clase que les permitirá comprimir archivos fácilmente.

Dentro de la clase ZIP.JAVA se encuentran dos métodos:
  1. String createZip(Map files,String ruta) : Permite crear un ZIP del listado de archivos incluidos en un MAP, dicho ZIP será creado en la ruta especificada por parámetros y se definirá como nombre de archivo la fecha actual ("ddMMyyyyHHmmss").
  2. byte[] createZip(Map files): Permite crear un ZIP del listado de archivos incluidos en un MAP, dicho ZIP será creado y convertido a un ARRAY deBYTE el cual luego será devuelto para su manejo en memoria.

La Implementación se incluye a continuación:

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
public class ZIPTest {
 
 public static void main(String args[]) throws IOException{
 Map listadoArchivos = new HashMap();
 //Obtener archivos a comprimir
 File file1 = new File("C://reports//03092013145138-Solicitud_Pension_Vejez_EMPART.pdf");
 File file2 = new File("C://reports//03092013121037-Solicitud_Pension_Vejez_EMPART.pdf");
 //Incluir los archivos en el MAP
 listadoArchivos.put("Archivo1.pdf", org.apache.commons.io.FileUtils.readFileToByteArray(file1));
 listadoArchivos.put("Archivo2.pdf", org.apache.commons.io.FileUtils.readFileToByteArray(file2));
 //Enviar Listado de Archivos y Futura Ruta
 String rutaZip = ZIP.createZip(listadoArchivos,"C://reports//");
 System.out.println("EL ZIP ha sido creado, revisar la Ruta: "+rutaZip);
 }
}

Código clase ZIP

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
 
/**
 * Clase que permite crear ZIPs en base a un listado de Archivos
 *
 * @author GRivas gustavo.cuentas@live.com
 *
 */
public class ZIP {
 
        /**
         * Metodo que permite generar un ZIP con el listado de archivos enviados en un MAP
         *
         * @param files Map con el Listado de Archivos a Comprimir
         * @param ruta Ruta donde será almacenado el ZIP
         * @return Ruta del ZIP creado
         * @throws IOException
         */
        public static String createZip(Map files,String ruta) throws IOException {  
                SimpleDateFormat sdfs = new SimpleDateFormat("ddMMyyyyHHmmss");
                Date date = new Date();
                String rutaFinal = ruta.concat(sdfs.format(date)).concat(".zip");
                FileOutputStream fout = new FileOutputStream(rutaFinal);
            ZipOutputStream zipfile = new ZipOutputStream(fout);  
            Iterator i = files.keySet().iterator();  
            String fileName = null;  
            ZipEntry zipentry = null;  
            while (i.hasNext()) {  
                fileName = (String) i.next();  
                zipentry = new ZipEntry(fileName);  
                zipfile.putNextEntry(zipentry);  
                zipfile.write((byte[]) files.get(fileName));  
            }  
            zipfile.close();
            return rutaFinal;
        }
       
        /**
         * Metodo que permite generar un ZIP con el listado de archivos enviados en un MAP
         * que retonar array de Bytes para manejar el archivo
         *
         * @param files Listado de Archivos a Comprimir
         * @return byte[] Representa el ZIP
         * @throws IOException
         */
        public static byte[] createZip(Map files) throws IOException {  
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ZipOutputStream zipfile = new ZipOutputStream(bos);  
            Iterator i = files.keySet().iterator();  
            String fileName = null;  
            ZipEntry zipentry = null;  
            while (i.hasNext()) {  
                fileName = (String) i.next();  
                zipentry = new ZipEntry(fileName);  
                zipfile.putNextEntry(zipentry);  
                zipfile.write((byte[]) files.get(fileName));  
            }  
            zipfile.close();
            return bos.toByteArray();  
        }
}

Comentarios

Entradas populares de este blog

Validación de Campos en JAVA

Instalación MongoDB en Windows