在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的扩展函数会为你做!

只是加入这些参考..干杯

Interesting Posts