【发布时间】:2015-11-07 21:28:38
【问题描述】:
我正在尝试使用
执行cd
try {
Process process = Runtime.getRuntime().exec(command);
BufferedReader stream = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = stream.readLine()) != null) {
stringBuilder.append(line);
stringBuilder.append('\n');
}
stream = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while ((line = stream.readLine()) != null) {
stringBuilder.append(line);
stringBuilder.append('\n');
}
} catch (IOException e) {
e.printStackTrace();
}
ls 有效。但是cd dir 不起作用。它不会更改目录。如果我执行pwd,它仍然显示/。我读到每次执行Runtime.getRuntime().exec(command); 时,它都会创建一个新的shell。我想我需要以某种方式捕获该外壳并对其进行维护,直到用户关闭应用程序为止。
不仅如此,我的输出中没有任何错误。例如。当我输入一个不存在的命令时,我没有收到错误消息。
【问题讨论】:
-
您还没有在这里描述“不起作用”的含义。它会抛出异常吗?由于
cd命令在成功时不输出任何内容(与ls不同),你怎么知道它失败了?另外-您要更改到哪个目录? Android 对允许应用访问的目录有很多限制。 -
我已经更新了答案。如果我尝试
cd到一个不存在的目录,它也不会给我任何错误。知道为什么我没有收到错误消息吗?
标签: android command-line terminal