我使用这个代码:
var reader: Int = 0
val buffer = CharArray(4096)
var output = StringBuilder()
val process = processBuilder.start()
var inputStream = BufferedReader(InputStreamReader(process.getInputStream()));
while ({ reader = inputStream.read(buffer); reader }() > 0) {
output.append(buffer, 0, reader)
println("Debug: " + output.toString())
}
inputStream.close()
process.waitFor()
它工作正常,但我有2个问题,使它不能满足我的需求:
1)它不会真实的检索每一行。它缓冲了实际输出中的一些行,并在每个循环中显示它们。
2)结果将被追加。我只需要每次迭代的实际输出和单行输出。
1条答案
按热度按时间r1zk6ea11#
相当优雅的Kotlin式解决方案:
while语句相当于Java的:
在Kotlin中,你不能在语句中分配变量,但是使用also链,你可以包含额外的代码同时执行。猫王操作员(?)之后的readLine允许“it”变为空,以便执行最新的检查。这是必要的,以避免崩溃。