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:
Dentro de la clase ZIP.JAVA se encuentran dos métodos:
- 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").
- 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{ MaplistadoArchivos = 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
Publicar un comentario