Sono un po 'confuso. So che uno zip vuoto non è legale. Ma che dire di questo campione frammento:Chiusura ZipOutputStream
ZipOutputStream zos = null;
try
{
zos = new ZipOutputStream(new FileOutputStream("..."));
//
//..
//
}
finally
{
zos.close();
}
Se erano stati aggiunti nessuna voce di avviamento postale per qualche motivo (possibile situazione di eccezionale) allora la seguente eccezione sarà gettato su una stretta tentativo:
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)
In questa situazione quale sarebbe il modo più pulito per chiudere il flusso?
Grazie ...
Grazie per il tuo aiuto, questa dovrebbe essere la verità :-) –
@lucho - ho appena modificato l'esempio per renderlo più robusto. – Anon
Questa soluzione va bene, ma il ragionamento è errato: è possibile chiudere entrambi i flussi. La chiusura di un flusso di wrapper come ZipOutputStream chiuderà anche FileOutputStream di livello inferiore. –