zoukankan      html  css  js  c++  java
  • ProcessBuilder调用外部脚本

     import java.io.BufferedReader;

     import java.io.BufferedWriter;

     import java.io.File;

     import java.io.IOException;

     import java.io.InputStream;

     import java.io.InputStreamReader;

     import java.io.OutputStreamWriter;

     import java.util.ArrayList;

     import java.util.Arrays;

     import java.util.Iterator;

     import java.util.List;

     import java.util.Map;

     public class UsingProcessBuilder {

      public static  String getCommandResult(List<String> cmds){

       String res="";

       ProcessBuilder pb = null;

       Process p = null;

             try{

                pb= new ProcessBuilder(cmds);

                pb.redirectErrorStream(true);

               p = pb.start();          

           }catch(IOException e){

               //记录报错日志--add

                  return res;

           }

              byte[] b = new byte[1024];

              int readbytes = -1;

              StringBuffer sb = new StringBuffer();

              //读取进程输出值

              //在JAVA IO中,输入输出是针对JVM而言,读写是针对外部数据源而言

              InputStream in = p.getInputStream();

              try{

                     while((readbytes = in.read(b)) != -1){

                            sb.append(new String(b,0,readbytes));

                            //System.out.printf("%s",readbytes);

                     }

              }catch(IOException e1){

              }finally {

                     try{

                            in.close();

                     }catch (IOException e2){

                     }

              }

              res=sb.toString();

              //等待进程退出

        try{

           int i=p.waitFor();   

        }catch(InterruptedException e){

              }

       return res;

      };

      /**

       * @param args

       */

      public static void main(String[] args) {

       // TODO Auto-generated method stub

          List<String> cmds = new ArrayList<String>();

     //*****************************************************************

         cmds.add("cmd.exe");

         cmds.add("/c");

         cmds.add("ping www.yahoo.com.cn");//等同于这两个参数分开

         String res=UsingProcessBuilder.getCommandResult(cmds);

         System.out.printf("%s",res);

      }

     }

  • 相关阅读:
    多线程编程:阻塞、并发队列的使用总结
    为什么阿里的程序员那么帅?---原来他们都有"编码规约扫描"神器在手
    多线程编程:多线程并发制单的开发记录【一】
    如何使用线程锁来提高多线程并发效率
    如何在分布式环境中同步solr索引库和缓存信息
    前端性能优化指南
    DOM操作方法、属性
    CSS样式手册
    XSS跨站脚本攻击
    数组和对象的使用方法
  • 原文地址:https://www.cnblogs.com/hedan/p/2807397.html
Copyright © 2011-2022 走看看