InputStream in = SomeClass.getInputStream(...);
BufferedInputStream bis = new BufferedInputStream(in);
try {
// read data from bis
} finally {
bis.close();
in.close();
}
Die javadoc für BufferedInputStream.close()
nicht erwähnt, ob der zugrunde liegenden Stream geschlossen ist:Wenn ich einen BufferedInputStream schließe, wird auch der zugrunde liegende InputStream geschlossen?
Schließt diesen Eingangsstrom und gibt alle Systemressourcen mit dem Strom verbunden. Sobald der Stream geschlossen wurde, wird durch weitere Aufrufe von read(), available(), reset() oder skip() eine IOException ausgelöst. Das Schließen eines zuvor geschlossenen Datenstroms hat keine Auswirkungen.
Ist der explizite Aufruf in.close()
notwendig, oder sollte es durch den Aufruf zu bis.close()
geschlossen werden?
Kurze Antwort: Ja. Lange Antwort: Yeeeeesssss. Im Ernst, siehe http://www.docjar.com/html/api/java/io/BufferedInputStream.java.html#472 – Marco13
möglich Duplikat von [Closing inputstreams in Java] (http://stackoverflow.com/questions/ 11263926/closing-inputstreams-in-java) –