Files Close nach Streaming

Veröffentlicht von

Die Klasse „Stream“ hat ein AutoClosable implementiert, es kann aber manchmal passieren, das der Stream noch nicht „close()“ ist.

Das das kann auch bei der Klasse „Files“ passieren, z.B.

// Java 8
java.util.stream.Stream;
java.nio.file.Files;
Stream lines = Files.line( path );

da es auch nichts anderes als ein Stream ist.

Um dem ganzen aus dem Weg zu gehen, sollte man es so schreiben

try( Stream lines = Files.line( path ) ) {
    // do something with the stream
}

oder noch besser wäre so

try( Stream lines = Files.line( path ) ) {
    // do something with the stream
    lines.close();
}