所以我刚刚开始使用Kotlinfor Android,并将我的Android Java代码转换为Kotlin。
在其中一次转换中,我偶然发现了一个BufferedReader,我通常用Java编写它,如下所示:
String result = "";
String line = "";
BufferedReader reader = new BufferedReader(someStream);
while ( (line = reader.readLine()) != null ) {
result += line;
}
但是在Kotlin中,Kotlin似乎不允许我在while条件中给变量赋值。
目前,我已经编写了如下代码:
val reader = BufferedReader(someStream)
var line : String? = ""
while (line != null) {
line = reader.readLine()
result += line
}
我不觉得它很优雅,感觉像是prev-gen,尽管使用了Kotlin。
在Kotlin中使用BufferedReader的最佳方式是什么?
9条答案
按热度按时间2jcobegt1#
您可以像这样使用
bufferedReader
63lcw9qa2#
如果你仍然想逐行读取它,你可以使用std lib中的一些扩展函数,如下所示:
或者可替换地,使用“功能”方法:
通过使用useLines,您不需要显式地调用读取器上的close,useLines扩展函数将为您执行此操作!
只是添加这些作为参考..干杯
8ljdwjyq3#
您也可以尝试使用“forEachLine”方法。
它也会在阅读最后一行后自动关闭流
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/java.io.-reader/index.html
有趣的阅读器。forEachLine(操作:(字符串)-〉单位)
循环访问此读取器的每一行,为读取的每一行调用操作,并在完成时关闭读取器。
ldioqlga4#
另一种方法是使用for循环:
虽然它不像接受的答案那样简洁,但它允许您循环并执行某种逻辑,而无需将所有内容都注入一个字符串,如下所示
5lwkijsr5#
多亏了João Gonçalves对stdlib的引用,我发现如果需要的话,可以使用forEachLine遍历阅读器。
iqxoj9l96#
使用如下代码
bt1cpqcv7#
当流有多行时,接受的答案失败。这是我的解决方案
3bygqnnd8#
您可以像这样使用BufferReader:
enxuqcxy9#
此解决方案在每行后包含字符\n