• 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);

      }

     }

  • 相关阅读:
    AtCoder Beginner Contest 248 赛时记录
    AtCoder Regular Contest 139 赛时记录
    Codeforces Round #783 (Div. 2) VP 记录
    退役前的遗言 or 遗产?
    Educational Codeforces Round 127 VP 记录
    AtCoder Beginner Contest 249 赛时记录
    Codeforces Round #782 (Div. 2) VP 记录
    AtCoder Regular Contest 125 补题记录
    文本相似度检查实现
    一些题(十四)
  • 原文地址:https://www.cnblogs.com/hedan/p/2807397.html
Copyright © 2020-2023  润新知