代码之家  ›  专栏  ›  技术社区  ›  Glenncito

如何在Kotlin中使用while循环迭代BufferedReader并附加到StringBuilder?

  •  1
  • Glenncito  · 技术社区  · 6 年前

    下面是我从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())“

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

    2 回复  |  直到 6 年前
        1
  •  7
  •   zsmb13    6 年前

    many different extensions 在Kotlin标准库中,您可以在这里使用输入流、文件、读取器等, Reader.forEachLine

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

    Reader 一行一行,它会自动关闭 读卡器 当迭代结束时。

    readLines , lineSequence ,和 useLines

        2
  •  3
  •   TheWanderer    6 年前

    不幸的是,我发现最好的方法就是用 while(true) :

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

    万一你不知道,猫王接线员( ?: null 如果是的话,在右边执行动作。