Лучший способ использовать командой bufferedreader в Котлин
поэтому я только начал использовать Kotlin для Android и преобразовал свои коды Android Java в Kotlin.
в одном из преобразований я наткнулся на BufferedReader, который я обычно писал на Java следующим образом:
String result = "";
String line = "";
BufferedReader reader = new BufferedReader(someStream);
while ( (line = reader.readLine()) != null ) {
result += line;
}
но в Котлине кажется, что Котлин не позволяет мне назначать значения переменным в условиях while.
В настоящее время я написал код следующим образом:
val reader = BufferedReader(someStream)
var line : String? = ""
while (line != null) {
line = reader.readLine()
result += line
}
что я не так элегантно и чувствует себя prev-gen, несмотря на использование Котлина.
Как лучше всего использовать BufferedReader в Котлине?
3 ответов
можно использовать 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, вам не нужно явно вызывать close на reader, функция расширений useLines сделает это за вас!
просто добавляя их для справки.. ура!--3-->
использовать такой код
val input = conn.inputStream val allText = input.bufferedReader().use(BufferedReader::readText) val result = StringBuilder() result.append(allText) return result.toString() } else { return "unsuccessful" }