您的位置:首页 > 其它

解决Runtime.exec() 无法读取命令输出

2016-08-04 10:30 323 查看
关键:输出分2种,标准输出和错误输出,获取正确的输出流才能取到想要的结果

Runtime.exec()  在windows中执行命令的时候,在cmd中能看到输出,但是代码却读取不到,应为我们通常用标准输出流,结果就是读不到结果为null

代码一直等着。也就是为什么我们用 cmdxx 1>result.log 无结果   cmdxx 2>result.log 却能取到结果,1是标准输出  2错误输出

错误输出流例子

try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("javac");
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = <span style="color:#ff0000;">new InputStreamReader(stderr); </span>
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</ERROR>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t) {
t.printStackTrace();
} 标准输出流例子
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("dir");
InputStream stdin = proc.getInputStream();
InputStreamReader isr = <span style="color:#ff0000;">new InputStreamReader(stdin); </span>
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t) {
t.printStackTrace();
}
参考:http://berdy.iteye.com/blog/810223
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐