Estoy un poco confundido. Sé que un zip vacío no es legal. Pero ¿qué pasa con esta muestra fragmento:Cierre de ZipOutputStream
ZipOutputStream zos = null;
try
{
zos = new ZipOutputStream(new FileOutputStream("..."));
//
//..
//
}
finally
{
zos.close();
}
Si no hay entradas zip se habían añadido por alguna razón (posible situación excepcional) a continuación, la siguiente excepción será lanzada en una estrecha intento:
Exception in thread "main" java.util.zip.ZipException: ZIP file must have at least one entry
at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:304)
at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:146)
at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:321)
En esta situación ¿Cuál sería la forma más limpia de cerrar la corriente?
Gracias ...
Gracias por su ayuda, esta debería ser la verdad :-) –
@lucho - acaba de editar el ejemplo para hacerlo más robusto. – Anon
Esta solución está bien, pero el razonamiento es incorrecto: puede cerrar cualquiera de las transmisiones. Al cerrar una secuencia contenedora como ZipOutputStream también se cerrará FileOutputStream de nivel inferior. –