Должен ли я закрывать потоки, созданные с помощью java.НИО.файл.Файлы.ньюинпутстрим?
В учебнике по потокам ничего не говорится о закрытии потоков, полученных из Files.newInputStream( path )
. Только некоторые неясные:
Является ли возвращаемый поток асинхронно закрываемым и / или прерываемый является очень специфичным поставщиком файловой системы и поэтому не указан.
Что такое "асинхронно" в этом контексте? Если я закрою поток явно или если другой поток закроет поток асинхронно?
2 ответа:
Вы обязательно должны закрыть полученный
InputStream
, как и все остальные. Термин "асинхронно закрываемый" относится к способности закрыть поток, в то время как другой поток блокируется на операции ввода-вывода в нем.От
InterruptibleChannel
документация:Канал, реализующий этот интерфейс, являетсяасинхронно закрываемым : Если поток блокируется в операции ввода-вывода на прерываемом канале, то другой поток может вызвать метод закрытия канала. Этот вызовет блокированный поток для получения AsynchronousCloseException.