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