Foros del Web » Programación para mayores de 30 ;) » Java »

Pasar de ZipOutputStream a bytes

Estas en el tema de Pasar de ZipOutputStream a bytes en el foro de Java en Foros del Web. Hola, Necesito leer los bytes contenidos en un ZipOutputStream, ya sea en un byte[], InputStream, .... Se pasar de un Output a un InputStream, pero ...
  #1 (permalink)  
Antiguo 20/03/2006, 11:30
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
Pasar de ZipOutputStream a bytes

Hola,

Necesito leer los bytes contenidos en un ZipOutputStream, ya sea en un byte[], InputStream, ....

Se pasar de un Output a un InputStream, pero no de un ZipOutputStream

alguna idea?

muchas gracias
__________________
Lo importante no es saber sino saber el teléfono del que sabe, jajaja.
  #2 (permalink)  
Antiguo 20/03/2006, 14:40
Avatar de Ani Alamo  
Fecha de Ingreso: julio-2005
Mensajes: 35
Antigüedad: 18 años, 9 meses
Puntos: 1
Un ejemplo breve con ZipInputStream es:
-----------------
public ProcesoRecuperacion(ZipInputStream zipInputStream) throws IOException
{
byte[] bytes = readBytes(zipInputStream);
}


byte[] bytes = readBytes(zipInputStream);
private byte[] readBytes(InputStream inputStream) throws IOException {
byte[] bytes = null;
byte[] buffer = new byte[4096];
int bytesRead = 0;
while ( (bytesRead = inputStream.read(buffer)) != -1) {
if (bytes!=null) {
byte[] oldBytes = bytes;
bytes = new byte[oldBytes.length+bytesRead];
System.arraycopy(oldBytes, 0, bytes, 0, oldBytes.length);
System.arraycopy(buffer, 0, bytes, oldBytes.length, bytesRead);
} else {
bytes = new byte[bytesRead];
System.arraycopy(buffer, 0, bytes, 0, bytesRead);
}
}
return bytes;
}


Pero para que sepas más a fondo ve a esta URL:
http://java.sun.com/developer/techni...g/compression/


Un saludo.
__________________

Ani Alamo Gómez de González


"Sin Dios no soy nada en este mundo, sin El nada puedo ser... ni las hojas de los árboles se mueven, sino es por su gran poder. Bendito seas Señor."

Última edición por Ani Alamo; 20/03/2006 a las 14:50
  #3 (permalink)  
Antiguo 20/03/2006, 15:28
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
El ZipOutputStream es de escritura... no se puede "leer", puedes interceptarlo cuando se lee o leer despues del destino donde se escribio, pero no puedes "leer" ese objeto.
  #4 (permalink)  
Antiguo 21/03/2006, 01:55
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 5 meses
Puntos: 0
Se que es de escritura pero...

Hola, gracias por vuestras respuestas,

Ani, el ejemplo que me pones es con ZipINPUTStream y no con ZipOutputStrem.

Greeneyed, se que es de escritura pero pensé que al igual que con un ByteArrayOutputStream puedes sacar los bytes, igual había alguna forma de hacerlo con el Zip. El problema es que no quiero escribir en ningún fichero, quiero hacerlo en memoria. La idea es que necesito contruir varios zips (ya lo tengo hecho) y a su vez, meter todos estos zips dentro de un zip global para que se lo descarguen.

gracias x todo
__________________
Lo importante no es saber sino saber el teléfono del que sabe, jajaja.
  #5 (permalink)  
Antiguo 21/03/2006, 05:50
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Hola,

El problema es que ByteArrayOutputStream es un OutputStream "final", es decir, especifica ya un destino para los bytes (en este caso un array), igual que un FileOutputStream especifica un fichero... pero ZipOutputStream NO es un stream "final" y ha de ir montado sobre uno final, que es de donde tu podras leer los bytes. Es decir, has de crear un ByteArrayOutputStream o un FileOutputStream y sobre el montar un ZipOutputStream. Cuando acabes de usar el stream, los bytes estaran en memoria en el array o en el fichero, segun el stream final que hayas usado.
  #6 (permalink)  
Antiguo 13/02/2009, 12:33
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Pasar de ZipOutputStream a bytes

Este tema es viejo pero es el primero que me aparecia en todas mis busquedas al intentar hacer algo parecido, espero le sirva a alguien mi comentario....

Si lo que quieres es generar un zip en bytes se soluciona con lo siguiente:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream out = new ZipOutputStream(baos);
....
todo el codigo para crear tu zipoutputStream
....
baos.toByteArray();

y listo, espero se de ayuda para alguien.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:57.