调用程序
在Java中 调用第三方程序是一个常见操作,如下代码
String []cmd = {"cmd", "/c", "dir"};
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();
标准输出与标准错误输出
获取程序的标准输出与标准错误输出,StackOverflow 上 Printing Runtime exec() OutputStream to console这篇给出了一个说明
- p.getInputStream() 获取标准输出
- p.getErrorStream() 获取标准错误输出
这个命名是根据caller的角度,而不是process的角度。
通过stream读取数据。
注意 windows上使用gbk编码 而 linux上使用utf-8编码
String line;
BufferedReader bReader = new BufferedReader(new InputStreamReader(new BufferedInputStream(p.getInputStream()), "gbk"));
while( (line = bReader.readLine()) != null ){
System.out.println(line);
}