如果要在java程序里执行一条linux可以用下面的写法,android中也类似
Java代码但是当遇到像cd这样的命令时,上面的这种写法切不管用,很多时候我们以为是命令输错了或是文件找不到。
现在提供一种新的执行命令方法:
Process proc = null; try { proc = Runtime.getRuntime().exec("/system/bin/sh", null, new File("/system/bin")); // android中使用 // proc = Runtime.getRuntime().exec("/bin/bash", null, new File("/bin")); //Linux中使用 // 至于windows,由于没有bash,和sh 所以这种方式可能行不通 Log.d("",""); } catch (IOException e) { e.printStackTrace(); } if (proc != null) { BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true); out.println("cd /data/data/com.vatata.atest.commandexecute"); out.println("pwd"); out.println("pwd"); out.println("pwd"); out.println("cd /"); out.println("ls -l"); // out.println("exit"); try { String line; while ((line = in.readLine()) != null) { System.out.println(line); Log.d("command", line); } // proc.waitFor(); //上面读这个流食阻塞的,所以waitfor 没太大必要性 in.close(); out.close(); proc.destroy(); } catch (Exception e) { e.printStackTrace(); } }
附上源码吧,可以看看,希望对需要的人有点帮助 <!--EndFragment-->