几个小时以来,我一直在尝试获取命令的输出,但没有结果。有这个代码:
val byteArry = ByteArray(1024)
var Holder: String = ""
try {
val processBuilder = ProcessBuilder("/system/bin/ls")
val process = processBuilder.start()
val inputStream = process.getInputStream()
while (inputStream.read(byteArry) !== -1) {
Holder += String(byteArry)
}
inputStream.close()
} catch (ex: IOException) {
ex.printStackTrace()
}
println("Output: " + Holder)
我正在尝试使用不同的(kotlin 和 java)方法从任何命令接收一些输出,但我什么也没收到。也没有错误。使用 Android Studio 中的文件资源管理器,我可以看到 ls 位于该位置。
查看完整描述
TA贡献1725条经验 获得超5个赞
我猜发生了错误。
ProcessBuilder.redirectErrorStream
您可以通过设置(之前)来检查它以
start()
使其达到给定
inputStream
,或者通过调用来简单地获取一个单独的
InputStream
错误
Process.getErrorStream()
。
目前尚不清楚您要实现的目标,因此很难给您明确的答案。您当前的代码只是试图运行位于
/system/bin/ls
(来自工作目录)的进程。如果您实际上正在尝试
ls
为目录运行
/system/bin/
,您将希望将目录作为参数发送给
ProcessBuilder
,如下所示:
val processBuilder = ProcessBuilder("ls", "/system/bin/")
查看完整回答