几个小时以来,我一直在尝试获取命令的输出,但没有结果。有这个代码: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 位于该位置。
1 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
我猜发生了错误。ProcessBuilder.redirectErrorStream
您可以通过设置(之前)来检查它以start()
使其达到给定inputStream
,或者通过调用来简单地获取一个单独的InputStream
错误Process.getErrorStream()
。
目前尚不清楚您要实现的目标,因此很难给您明确的答案。您当前的代码只是试图运行位于/system/bin/ls
(来自工作目录)的进程。如果您实际上正在尝试ls
为目录运行/system/bin/
,您将希望将目录作为参数发送给ProcessBuilder
,如下所示:
val processBuilder = ProcessBuilder("ls", "/system/bin/")
添加回答
举报
0/150
提交
取消