java使用外部程序方法

java使用外部程序方法

在java中可以使用Runtime类ProcessBuilder类两种方式来执行外部程序

ProcessBuilder类

参数少的情况:

         //创建processBuilder对象
        ProcessBuilder processBuilder = new ProcessBuilder();

        //设置第三方应用命令
        processBuilder.command("ping", "127.0.0.1");

        //将标准输入流和错误流合并
        processBuilder.redirectErrorStream(true);

        //启动一个进程
        Process process = processBuilder.start();

        //通过标准输入流拿到正常错误的信息
        InputStream inputStream = process.getInputStream();

        //转成字符流输出
        InputStreamReader reader = new InputStreamReader(inputStream,"GBK");
        //缓冲
        char[] chars = new char[1024];
        int len = -1;
        while ((len = reader.read(chars)) != -1){
            String string = new String(chars, 0, len);
            System.out.println(string);
           }

        //关流
        reader.close();
        inputStream.close();

参数多的情况;

//创建processBuilder对象
        ProcessBuilder processBuilder = new ProcessBuilder();

        //设置第三方应用命令
        List<String> list = new ArrayList<>();
        list.add("E:\\ffmpeg\\bin\\ffmpeg.exe");
        list.add("-i");
        list.add("E:\\ffmpegtest\\1.mp4");
        list.add("-hls_time");
        list.add("10");
        list.add("-hls_list_size");
        list.add("0");
        list.add("-hls_segment_filename");
        list.add("E:\\ffmpegtest\\hls\\m3u8_%05d.ts");
        list.add("E:\\ffmpegtest\\hls\\1.m3u8");
        processBuilder.command(list);


        //将标准输入流和错误流合并
        processBuilder.redirectErrorStream(true);

        //启动一个进程
        Process process = processBuilder.start();

        //通过标准输入流拿到正常错误的信息
        InputStream inputStream = process.getInputStream();

        //转成字符流输出
        InputStreamReader reader = new InputStreamReader(inputStream,"GBK");
        //缓冲
        char[] chars = new char[1024];
        int len = -1;
        while ((len = reader.read(chars)) != -1){
            String string = new String(chars, 0, len);
            System.out.println(string);
        }

        //关流
        reader.close();
        inputStream.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值