InputStream in = SomeClass.getInputStream(...);
BufferedInputStream bis = new BufferedInputStream(in);
try {
// read data from bis
} finally {
bis.close();
in.close();
}
Javadoc per BufferedInputStream.close()
non menziona se il flusso sottostante è chiuso:Quando chiudo BufferedInputStream, anche l'InputStream sottostante viene chiuso?
chiude questo flusso di input e rilascia le risorse di sistema associate con il flusso. Una volta che lo stream è stato chiuso, ulteriori read(), disponibili(), reset(), o skip() invocherà una IOException. La chiusura di un flusso precedentemente chiuso non ha alcun effetto.
è la chiamata esplicita a in.close()
necessario, o dovrebbe essere chiuso dalla chiamata a bis.close()
?
Risposta breve: Sì. Risposta lunga: Yeeeeesssss. Seriamente, guarda http://www.docjar.com/html/api/java/io/BufferedInputStream.java.html#472 – Marco13
possibile duplicato di [Closing inputstreams in Java] (http://stackoverflow.com/questions/ 11263926/closing-inputstreams-in-java) –