/**
* Java调用windows的DOS命令
*/
public class RunDocInJava{
public static void main(String[] args) {
InputStream ins = null;
String[] cmd = new String[] { "cmd.exe", "/c", "ipconfig" }; // 命令行
try {
//Runtime.exec()用来执行外部程序或命令
Process process = Runtime.getRuntime().exec(cmd);
ins = process.getInputStream(); // 获取执行doc命令后的信息
//将获取的信息尽可能放入缓冲区
BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
String line = null;
//读取信息
//会先读取缓冲区信息,如果信息不完全才会去读取源数据
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
int exitVal = process.waitFor(); //获取程序返回值 成功为“0”
System.out.println("return Integer: "+exitVal);
process.getOutputStream().close(); //程序中如果没有关闭会造成堆栈溢出
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行截图:
windows 和 linux上面调用的一些区别举例:
Windows下调用程序
Process proc =Runtime.getRuntime().exec("exefile");
Linux下调用程序就要改成下面的格式
Process proc =Runtime.getRuntime().exec("./exefile");
Windows下调用系统命令
String [] cmd={"cmd","/C","copy exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);
Linux下调用系统命令就要改成下面的格式
String [] cmd={"/bin/sh","-c","ln -s exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);
Windows下调用系统命令并弹出命令行窗口
String [] cmd={"cmd","/C","start copy exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);
Linux下调用系统命令并弹出终端窗口就要改成下面的格式
String [] cmd={"/bin/sh","-c","xterm -e ln -s exe1 exe2"};
Process proc =Runtime.getRuntime().exec(cmd);
还有要设置调用程序的工作目录就要
Process proc =Runtime.getRuntime().exec("exeflie",null, new File("workpath"));
windows和linux调用区别举例参考自:http://robinjoe.iteye.com/blog/1201388
转载于:https://blog.51cto.com/2015arong/1713963