zoukankan      html  css  js  c++  java
  • Java使用ProcessBuilder类调用外部程序

    1. demo1

    @Test
        public void testProcessBuilder() {
            ProcessBuilder processBuilder = new ProcessBuilder();
    //       processBuilder.command("ping","127.0.0.1");
            processBuilder.command("ipconfig");
            //将标准输入流和错误输入流合并,通过标准输入流读取信息
            processBuilder.redirectErrorStream(true);
            try {
                //启动进程
                Process start = processBuilder.start();
                //获取输入流
                InputStream inputStream = start.getInputStream();
                //转成字符输入流
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gbk");
                int len = -1;
                char[] c = new char[1024];
                StringBuffer outputString = new StringBuffer();
                //读取进程输入流中的内容
                while ((len = inputStreamReader.read(c)) != -1) {
                    String s = new String(c, 0, len);
                    outputString.append(s);
                    System.out.print(s);
                }
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    

    2. demo02

     @Test
        public void testFFmpeg() {
            ProcessBuilder processBuilder = new ProcessBuilder();
            //定义命令内容
            List<String> command = new ArrayList<>();
            command.add("D:/program/ffmpeg-20191229-e20c6d9-win64-static/bin/ffmpeg.exe");
            command.add("-i");
            command.add("D:/test/video/1.avi");
            command.add("-y");//覆盖输出文件
            command.add("-c:v");
            command.add("libx264");
            command.add("-s");
            command.add("1280x720");
            command.add("-pix_fmt");
            command.add("yuv420p");
            command.add("-b:a");
            command.add("63k");
            command.add("-b:v");
            command.add("753k");
            command.add("-r");
            command.add("18");
            command.add("D:/test/video/1.mp4");
            processBuilder.command(command);
            //将标准输入流和错误输入流合并,通过标准输入流读取信息
            processBuilder.redirectErrorStream(true);
            try {
                //启动进程
                Process start = processBuilder.start();
                //获取输入流
                InputStream inputStream = start.getInputStream();
                //转成字符输入流
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gbk");
                int len = -1;
                char[] c = new char[1024];
                StringBuffer outputString = new StringBuffer();
                //读取进程输入流中的内容
                while ((len = inputStreamReader.read(c)) != -1) {
                    String s = new String(c, 0, len);
                    outputString.append(s);
                    System.out.print(s);
                }
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    


  • 相关阅读:
    spark 中划分stage的思路
    如何带人
    技术管理
    学会谈判
    绩效评估与绩效反馈
    企业文化如何落地
    绩效沟通的best原则
    Area POJ
    Cows POJ
    Grandpa's Estate POJ
  • 原文地址:https://www.cnblogs.com/ifme/p/12129522.html
Copyright © 2011-2022 走看看