Ответ
В Kotlin для управления ресурсами (файлы, соединения и т.д.) лучше всего использовать use() – extension-функцию для Closeable/AutoCloseable. Она автоматически закроет ресурс после выполнения блока, даже если произошло исключение.
FileInputStream("file.txt").use { input ->
// работа с input
} // ресурс закроется автоматически
Для нескольких ресурсов:
FileInputStream("input.txt").use { input ->
FileOutputStream("output.txt").use { output ->
input.copyTo(output)
}
}
Альтернатива – try-with-resources (в Kotlin через use()). Главное преимущество – безопасность: ресурс гарантированно закроется, код становится чище, не нужно писать finally-блоки.