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