java.nio.Files.list(Path)でリストアップしたらクローズしないといけない
java.nio.Files.list(Path)で指定したディレクトリ直下のファイルのパス一覧をStream<Path>型で取得できる
Stream<Path> paths = Files.list(Paths.get("/path/to/directory"));
このメソッドの戻り値をcloseしないとToo many open filesでエラーが発生するようになる。
java.nio.Files.list(Path)の戻り値をcloseする
Stream<T>インタフェースの親インタフェースBaseStream<T>は、さらに親がAutoClosableインタフェースなので
try-with-resoucesで確実に閉じることができる。
try (Stream<Path> paths = Files.list(dir)) {
// 処理
}
list以外の閉じ忘れに注意したいメソッド
InputStreamやOutputStreamを作るメソッドであれば閉じ忘れることは無いが、
それ以外のメソッドはcloseが必要であることに気づきづらいので注意。
特に以下のメソッドもcloseが必要となる。
- Files.walk
- Files.find
- Files.lines
\第一線のプログラマーの行動原理を学べる!/
