process java_java进程调用 Process

package org.sf.exec; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; /**  * test.bat    内容为ping.baidu.com  * 有输出错误流或者正常流,是不会发生异常的  *  */ public class CommandUtil {     // 保存进程的输入流信息     private List stdoutList = new ArrayList();     // 保存进程的错误流信息     private List erroroutList = new ArrayList();     public static void main(String[] args) {         CommandUtil util = new CommandUtil();         util.executeCommand("E:\\test.bat");         printList(util.getStdoutList());         System.out.println("--------------------");         printList(util.getErroroutList());     }     public static void printList(List list){         for (String string : list) {             System.out.println(string);         }     }     public void executeCommand(String command) {         // 先清空         stdoutList.clear();         erroroutList.clear();         Process p = null;         try {             p = Runtime.getRuntime().exec(command);             // 创建2个线程,分别读取输入流缓冲区和错误流缓冲区             ThreadUtil stdoutUtil = new ThreadUtil(p.getInputStream(), stdoutList);             ThreadUtil erroroutUtil = new ThreadUtil(p.getErrorStream(), erroroutList);             //启动线程读取缓冲区数据             stdoutUtil.start();             erroroutUtil.start();             p.waitFor();         } catch (IOException e) {             e.printStackTrace();         } catch (InterruptedException e) {             e.printStackTrace();         }     }     public List getStdoutList() {         return stdoutList;     }     public List getErroroutList() {         return erroroutList;     } } class ThreadUtil implements Runnable {     // 设置读取的字符编码     private String character = "GB2312";     private List list;     private InputStream inputStream;     public ThreadUtil(InputStream inputStream, List list) {         this.inputStream = inputStream;         this.list = list;     }     public void start() {         Thread thread = new Thread(this);         thread.setDaemon(true);//将其设置为守护线程         thread.start();     }     public void run() {         BufferedReader br = null;         try {             br = new BufferedReader(new InputStreamReader(inputStream, character));             String line = null;             while ((line = br.readLine()) != null) {                 if (line != null) {                     list.add(line);                 }             }         } catch (IOException e) {             e.printStackTrace();         } finally {             try {                 //释放资源                 inputStream.close();                 br.close();             } catch (IOException e) {                 e.printStackTrace();             }         }     } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值