tengo que cargar con esta prueba junit:¿Por qué ZipInputStream no puede leer la salida de ZipOutputStream?
public void test() throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ZipOutputStream zipOut = new ZipOutputStream(out);
zipOut.putNextEntry(new ZipEntry("file"));
zipOut.write((new byte[] { 0x01, 0x02, 0x03 }));
zipOut.closeEntry();
zipOut.close();
ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(out.toByteArray()));
ZipEntry entry = zipIn.getNextEntry();
assertNotNull(entry);
assertEquals("file", entry.getName());
assertEquals(3, entry.getSize());
}
Estoy escribiendo un archivo con el "archivo" nombre y un contenido de tres bytes a un ZipOutputStream. Luego trato de leer los datos creados con un ZipInputStream, pero la última afirmación falla, porque entry.getSize()
es -1
y no 3
, como se esperaba.
¿Qué estoy haciendo mal aquí? ¿Qué debo cambiar para restaurar el contenido de "archivo"? Creo que primero tengo que saber la longitud para poder leer los datos de la transmisión.
Has probado tu código, de hecho, no funciona. Estoy desconcertado. Investigando ... –
Lo tengo. Responda abajo. –