我从REST web服务返回了大量文本,我想直接将其写入文件.最简单的方法是什么?

我已经编写了以下有效的函数扩展.但我忍不住想,有一种更干净的方法可以做到这一点.

Note:我希望使用TRY WITH RESOURCES自动关闭流和文件

fun File.copyInputStreamToFile(inputStream: InputStream) {
    val buffer = ByteArray(1024)

    inputStream.use { input ->
        this.outputStream().use { fileOut ->

            while (true) {
                val length = input.read(buffer)
                if (length <= 0)
                    break
                fileOut.write(buffer, 0, length)
            }
            fileOut.flush()
        }
    }
}

推荐答案

您可以使用copyTo function:

fun File.copyInputStreamToFile(inputStream: InputStream) {
    this.outputStream().use { fileOut ->
        inputStream.copyTo(fileOut)
    }
}

Kotlin相关问答推荐

Android前台服务 list —Altbeacon

用于将 0.5 变为 0 的 round() 函数的模拟

init中的NPE抽象函数变量

为什么 trySend 会发出假数据?

Kotlin:我可以将函数分配给 main 的伴随对象中的变量吗?

测试协程和线程之间的差异,我在kotlin中使用线程时无法得到OOM错误

使用空键映射获取

如何在 Hibernate Panache 中进行部分搜索

如何在 kotlin 中通过反射设置委托属性值?

Kotlin 中列表或数组的乘积

是否可以通过超时暂停协程?

.indices 在 kotlin 中的含义是什么?

为什么 android studio 不为所有安全参数生成代码?

如何设置两列recyclerview?

如何使用kotlin中的反射查找包中的所有类

Kotlin解构when/if语句

Kotlin val difference getter override vs assignment

TypeConverter()在Android的TypeConverter错误中具有私有访问权限

修改扩展函数中的this

var str:String是可变的还是不可变的?