Рассмотрим следующий код:
Path directory = Paths.get(/* some directory */);
Files.list(directory).forEach(System.out::println);
Завершает ли операция терминала (например, forEach) основной файл, который был открыт?
Обратитесь к соответствующим частям javadoc Files.list:
Возвращенный поток инкапсулирует DirectoryStream. Если требуется своевременное удаление ресурсов файловой системы, следует использовать конструкцию try-with-resources для обеспечения того, чтобы метод закрытия потока был вызван после завершения операций потока.
Если он не вызывает Stream.close(), что тогда было бы лучшей альтернативой для вызова его при создании поддерживаемого кода?