java执行命令行程序
1、Process对象
构造Process对象:
(a)使用java.lang.Runtime提供的方法exec(String command),使用它的作用与直接在linux shell或windows cmd下直接输入command作用一致,它会返回一个Process的实例。
(b)使用ProcessBuilder类的start()方法,即可返回一个Process实例。(需要注意的是,ProcessBuilder的构造函数接受的参数列表为可变参数列表,在java中声明语法为void function(type… vars))这里的Process已经是一个正在运行的进程了。
2、Runtime的使用
Runtime run = Runtime.getRuntime(); //获取应用运行环境的对象
run.exec("cmd /c set CLASSPATH=D:\\ && javac D:\\a.java && java a");
JavaSE5之前使用Runtime的exec方法执行本地命令.在JavaSE5之后,可以使用ProcessBuilder执行本地命令.
3、ProcessBuilder的使用
public void exec() {
ProcessBuilder processBuilder = new ProcessBuilder();
List<String> command = "python3 run.py";
processBuilder.command(command);
//将标准输入流和错误输入流合并,通过标准输入流读取信息
processBuilder.redirectErrorStream(true);
try {
//启动进程
Process start = processBuilder.start();
//获取输入流
InputStream inputStream = start.getInputStream();
//转成字符输入流
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gbk");
int len = -1;
char[] c = new char[1024];
StringBuffer outputString = new StringBuffer();
//读取进程输入流中的内容
while ((len = inputStreamReader.read(c)) != -1) {
String s = new String(c, 0, len);
outputString.append(s);
System.out.print(s);
}
inputStream.close();
int code = start.waitFor();
return code;
} catch (IOException e) {
e.printStackTrace();
}
}