如果要在java程序里执行一条linux可以用下面的写法
Process process = Runtime.getRuntime().exec(cmd);process.waitFor();
但是当遇到像cd这样的命令时,上面的这种写法切不管用,很多时候我们以为是命令输错了或是文件找不到。
现在提供一种新的执行命令方法:
File wd = new File("/bin");
System.out.println(wd);
Process proc = null;
try {
proc = runtime.getruntime().exec("/bin/bash", null, wd);
} 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 .."); //执行该语句后返回上一级目录
out.println("pwd"); //打印当前目录
out.println("java -jar xxx.jar");//执行该目录下的jar文件,Linux下执行jar文件必须进入其所在的文件夹
out.println("exit");
try { String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
proc.waitFor(); i
n.close();
out.close();
proc.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
这种写法相当于把整个bash环境拿进来了,out.println只要输入你需要执行的命令就行。
看上去很复杂,其实很实用,只要能在命令行执行的命令,都可以拿来试试。