Pasos para crear un zip en java sin guardarlo en un directorio temporal

-Crear un ZipOutputStream que referencia el destino. En el ByteArrayOutputStream se guardará el zip temporalmente.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(baos);


-Crear un InputStream (o derivado) que referencia un archivo a agregar al ZIP. En el EmbeddedObject se guarda el archivo que se quiere añadir al zip.
EmbeddedObject obj;
InputStream is = obj.getInputStream();


-Crear una ZipEntry que representa el InputStream. Al ZipEntry se le pasa el nombre como se quiere que se llame el fichero que se añadirá al zip.
zipEntry = new ZipEntry(“12354.xls”);

-Agregar el ZipEntry al ZipOutputStream llamando a su método putNextEntry().
zip.putNextEntry(zipEntry);

-Copiar datos del InputStream al ZipOutputStream (usando un buffer array de bytes para leer desde el InputStream y luego escribirlo en el ZipOutputStream).
byte[] buffer = new byte[2048];
int byteCount;
while (-1 != (byteCount = is.read(buffer))) {
zip.write(buffer, 0, byteCount);
}


-Cerrar la entrada zip actual y el InputStream para escribir la siguiente entrada al ZipOutputStream.
zip.closeEntry();
is.close();

-Al añadir todos los ficheros al zip, cerrar el ZipOutputStream.
zip.close();

Anuncios

3 comentarios

  1. Quede un poco perdido con este objeto “EmbeddedObject “, podrias explicar de que se trata?.
    Gracias.

  2. jorge, ese “embbedObject” es el archivo que se va agregar al zip, vos debés usar el que necesites. cualquier cosa que le puedas sacar un inputstream

  3. ¿Y qué debo hacer luego con el zip para devolverlo al usuario?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: