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

来源:互联网 发布:mac显示电池百分比 编辑:程序博客网 时间:2024/06/06 02:18

关键:输出分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


0 0
原创粉丝点击