快速业务通道

教你在Java中执行其它程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
的进程已经终止。

通过该类提供的方法,可以实现与启动的进程之间通信,达到交互的目的。

3、从标准输出和错误输出流读取信息

从启动其他程序的Java进程看,已启动的其他程序输出就是一个普通的输入流,可以通过 getInputStream()和getErrorStream来获取。

对于一般输出文本的进程来说,可以将InputStream封装成BufferedReader,然后就可以一行一行的对 进程的标准输出进行处理。

教你在Java中执行其它程序(3)

时间:2011-10-02 Java学习室 终南

4、举例

(1)Runtime.exec()

import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; public class Test1 { public static void main(String[] args) { try { Process p = null; String line = null; BufferedReader stdout = null; //list the files and directorys under C:\ p = Runtime.getRuntime().exec("CMD.exe /C dir", null, new File("C:\\")); stdout = new BufferedReader(new InputStreamReader(p .getInputStream())); while ((line = stdout.readLine()) != null) { System.out.println(line); } stdout.close (); //echo the value of NAME p = Runtime.getRuntime().exec("CMD.exe /C echo % NAME%", new String[] {"NAME=TEST"}); stdout = new BufferedReader(new InputStreamReader (p .getInputStream())); while ((line = stdout.readLine()) != null) { System.out.println(line); } stdout.close(); } catch (Exception e) { e.printStackTrace(); } } }

(2)ProcessBuilder

import java.io.BufferedReader; import java.io.File; import  java.io.InputStreamReader; import java.util.ArrayList; import  java.util.List; public class Test2 { public static void main(String[] args)  { try { List list = new ArrayList(); ProcessBuilder pb = null; Process  p = null; String line = null; BufferedReader stdout = null; //list the files and directorys under C:\ list.add("CMD.EXE"); list.add("/C"); list.add("dir"); pb = new ProcessBuilder (list); pb.directory(new File("C:\\")); p = pb.start(); stdout = new BufferedReader(new InputStreamReader (p .getInputStream())); while ((line = stdout.readLine()) != null)  { System.out.println(line); } stdout.close(); //echo the value of  NAME pb = new ProcessBuilder(); pb.command(new String[] {"CMD.exe", "/C", "echo  %NAME%"}); pb.environment().put("NAME", "TEST"); p = pb.start(); stdout =  new BufferedReader(new InputStreamReader(p .getInputStream())); while ((line =  stdout.readLine()) != null) { System.out.println(line); } stdout.close(); }  catch (Exception e) { e.printStackTrace();

教你在Java中执行其它程序(4)

时间:2011-10-02 Java学习室 终南

5、获取进程的返回值

通常,一个程序/进程在执行结束后会向操作系统返回一个整数值,0一般代表执行成功,非0表示执行 出现问题。有两种方式可以用来获取进程的返回值。一是利用waitFor(),该方法是阻塞的,执导进程执 行完成后再返回。该方法返回一个代表进程返回值的整数值。另一个方法是调用exitValue()方法,该方 法是非阻塞的,调用立即返回。但是如果进程没有执行完成,则抛

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号