在Kotlin中使用BufferedReader的最佳方式
所以我刚刚开始使用Kotlin for Android(希望它可以帮助我使用Swift),并将Android Java代码转换为Kotlin。
在其中一个转换中,我偶然发现了一个BufferedReader,我通常会用Java编写(或者说C#),如下所示:
String result = ""; String line = ""; BufferedReader reader = new BufferedReader(someStream); while ( (line = reader.readLine()) != null ) { result += line; }
但是在Kotlin中,似乎Kotlin不允许我在条件的情况下给变量赋值。
目前,我已经编写了如下代码:
val reader = BufferedReader(someStream) var line : String? = "" while (line != null) { line = reader.readLine() result += line }
我不觉得那么优雅(尽管使用Kotlin,但是prev-gen)。
在Kotlin中使用BufferedReader最好的方法是什么?
你可以像这样使用bufferedReader
val allText = inputStream.bufferedReader().use(BufferedReader::readText)
如果你仍然想逐行阅读,你可以使用std lib中的一些扩展函数,如下所示:
val reader = someStream.bufferedReader() val iterator = reader.linesSequences().iterator() while(iterator.hasNext()) { val line = iterator.next() // do something with line... } reader.close()
或者使用“功能”方法:
val reader = someStream.bufferedReader() reader.useLines { it.map { line -> // do something with line } }
通过使用useLines,你不需要在reader上明确的调用close,useLines的扩展函数会为你做!
只是加入这些参考..干杯