Android 执行命令行时,cd不';行不通
我正在尝试使用执行Android 执行命令行时,cd不';行不通,android,command-line,terminal,Android,Command Line,Terminal,我正在尝试使用执行cd try { Process process = Runtime.getRuntime().exec(command); BufferedReader stream = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = stream.readLine()) !=
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(命令)当执行代码>时,它将创建一个新的shell。我想我需要捕获这个外壳并维护它直到用户关闭应用程序
不仅如此,我的输出中没有任何错误。当我输入一个不存在的命令时,我没有得到错误消息
我每次读到Runtime.getRuntime().exec(命令);被处决,
它会创建一个新的外壳
这是正确的。当您为每个命令调用Runtime.exec()
时,您正在创建一个新进程。每个进程都有自己的环境,包括一个单独的工作目录,该目录不影响父进程(您的应用程序)或以后创建的任何其他进程
我的输出没有任何错误
您不会得到任何错误,因为shell命令不会执行失败。这些命令只返回一个状态代码,指示进程终止时的成功或失败-可以通过process.exitValue()
获取代码-但请确保先使用process.waitFor()
完成进程
如果要执行多个命令,可以使用exec()
启动shell可执行文件,然后通过输入和输出流写入命令和读取回复,或者使用分号将所有命令连接在一起,并直接使用命令行执行,如:
sh-c'cd/;pwd'
您没有描述“不工作”在这里的含义。它会引发异常吗?由于cd
命令在成功时不输出任何内容(与ls
不同),您如何知道它失败了?另外-您试图更改到哪个目录?Android对应用程序可以访问哪些目录有很多限制。我已经更新了答案。如果我试图cd
到一个不存在的目录,它也不会给我任何错误。知道我为什么没有收到错误信息吗?