android - 如何在 Kotlin 中使用 while 循环遍历 BufferedReader 并附加到 StringBuilder?

标签 android kotlin

这是我从 Java 移植过来的一些代码:

var audioDataString = ""
        val jsonReader = BufferedReader(InputStreamReader(context.resources.openRawResource(resourceName)))
        val jsonBuilder = StringBuilder()
        var line: String? = null
        while ((line = jsonReader.readLine()) != null) {
            jsonBuilder.append(line).append("")
        }

(line = jsonReader.readLine())” 给我以下错误:Assingments are not expressions, and only expressions are allowed in this context。

如何在 Kotlin 中正确执行此操作?

谢谢。

最佳答案

many different extensions在 Kotlin 标准库中,您可以在此处使用输入流、文件、阅读器等。对于此用例,Reader.forEachLine将是最简单的使用:

jsonReader.forEachLine { line ->
    jsonBuilder.append(line)
}

这使您可以逐行处理 Reader,并在迭代结束时自动关闭 Reader

您可能还想看看 readLines , lineSequence , 和 useLines这可以在更复杂的情况下为您提供帮助。

关于android - 如何在 Kotlin 中使用 while 循环遍历 BufferedReader 并附加到 StringBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52244721/

相关文章:

android - Kotlin中的音乐URI空指针异常

android - 无法使用 RxKotlin 的 'observeOn' 主线程

android - 为什么 Jetpack Compose Preview 什么也不显示?

android - 自定义字体空指针异常

Android AspectJ @Around 方法参数不工作

android - 如何膨胀形状以在 Canvas 上绘制?

android - 如何在撰写中围绕多行文本绘制边框

android - 使用 JDK 1.7 在 google play 中发布的应用程序

java - SWIG C 函数指针和 JAVA

enums - 在 Kotlin 中直接引用枚举实例,无需类