Avatar ·

如何在 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. 最好代码量最少。