如何在 Kotlin 中将 InputStream 的全部内容读取为字符串?
大家好!我最近开始学习 Kotlin,遇到了这样一个任务:我需要从 InputStream(例如,来自文件或网络响应)读取数据并将其转换为普通的 String 字符串。问题在于,我习惯了 Java,在 Java 中需要编写大量带有循环、StringBuilder 和缓冲区的样板代码。在 Kotlin 中,似乎有更简洁的方法,但我找不到清晰的示例。
以下是我尝试过的:
```kotlin
fun readFromStream(stream: InputStream): String {
val bytes = stream.readBytes()
return String(bytes)
}
```
但这会引起编码混淆,而且我不确定这对于大型流是否正确。我还听说过 `.bufferedReader()` 和 `.readText()`,但不知道如何正确应用它们。
我需要一个解决方案,它:
1. 适用于任何 InputStream(文件、socket、ByteArrayInputStream)。
2. 考虑编码(默认 UTF-8)。
3. 不需要手动管理缓冲区或循环。
4. 最好代码量最少。