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
\第一線のプログラマーの行動原理を学べる!/