OutputStream fos; OutputStream bos; OutputStream zos; try { fos = new FileOutputStream(anyFile); bos = new BufferedOutputStream(fos); zos = new ZipOutputStream(bos); } finally { if (zos != null) { zos.close(); // + exception handling } } Does closing zos automatically closes bos and fos too, or do I need to close them manually?
4 Réponses :
Oui, ça fait. Son Javadoc dit: p>
ferme le flux de sortie zip ainsi que le flux filtré. P> blockQuote>
Aussi, le Javadoc pour
BufferedOutPutStream code>
dit: p>ferme ce flux de sortie et libère les ressources système associées au flux. P>
Le
Fermer code> méthode de
FilterOutPutStream code> Appelle son
Flush code> méthode, puis appelle la méthode
Fermer code> de son sous-jacent flux de sortie. P> blockQuote>
Ainsi, lorsque vous fermez votre
zipOutputStream code>, il fermera votre
bufferedOutPutStream code>, qui fermera à son tour votre fichier
FileOutPutStream p>. P>.
oui. p>
ZipOutputtream.close () code>
La méthode est spécifiée par resserreable.close () code>
qui: p>
ferme ce flux et libère les ressources système associées à ça. p> blockQuote>
La même chose s'applique à
BufferedOutPutStream.close () Code>
, une méthode héritée deFilterOutPutStream code>. P>
fermeture du flux d'emballage ferme automatiquement le flux interne. em> Donc, dans votre cas, vous n'avez besoin que de fermer Voici ce qui se passe lorsque vous instaniez un voici la mise en oeuvre de similaire, zipOutputStream code>. La fermeture d'un flux ne jette pas à deux reprises une exception par conséquent, de la fermeture d'un courant interne (bien que inutile) fonctionne également (bien que inutile). P>
zipOutputStream code> p> < Pré> xxx pré>
zipOutputtream.close () code> p>
bufferedOutPutStream code > ferme automatiquement le
FileOutPutStream code> via son hérité
filtreOutPutStream # Fermer () code> qui a été implémenté comme suit: p>
oui ça fait. Mais étrangement, lorsque j'exécuterais le balayage de Fortify avec Rechercher Bug activé, il attire tous ces types de flux emballés et non récoltés en tant que fixes prioritaires. Je ne sais pas pourquoi ils le font p>
Vous devez également faire attention à Toujours I> Fermer le flux le plus à l'extérieur; Sinon, vous pouvez avoir une perte de données en raison de tampons non éclairés dans des flux d'enveloppe qui ont obtenu leur ruisseau emballé sous leur nez.