Довольно элегантное решение Kotlin-ish:
var output: String = ""
val process = processBuilder.start()
val inputStream = BufferedReader(InputStreamReader(process.getInputStream()))
while ( inputStream.readLine()?.also { output = it } != null) {
println("Debug: " + output)
}
inputStream.close()
process.waitFor()
Оператор while эквивалентен Java:
while ( (output = inputStream.readLine()) != null) {
println("Debug: " + output)
}
В Kotlin нельзя назначать переменные внутри операторов, но используя цепочку также, вы можете включить дополнительный код, который будет выполняться одновременно.Оператор Элвиса (?) После readLine позволяет "it" обнуляться для выполнения последней проверки.Это необходимо, чтобы избежать сбоев.