Java如何基于ProcessBuilder类调用外部程序

作者:yaominghui 时间:2023-11-27 20:19:57 

这篇文章主要介绍了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();
   }
 }

Java如何基于ProcessBuilder类调用外部程序

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();
   }
 }

Java如何基于ProcessBuilder类调用外部程序

Java如何基于ProcessBuilder类调用外部程序

来源:http://www.mamicode.com/info-detail-2884685.html

标签:Java,Process,Builder,调用
0
投稿

猜你喜欢

  • 基于Spring Mvc实现的Excel文件上传下载示例

    2022-01-22 02:02:56
  • SpringBoot实现配置文件的替换

    2023-11-21 22:27:16
  • mybatis的插件机制示例详解

    2023-02-24 23:46:17
  • android串口开发入门之搭建ndk开发环境及第一个jni调用程序

    2023-03-14 16:54:55
  • java实现水果超市管理系统

    2022-02-03 12:52:32
  • Android使用GPS获取用户地理位置并监听位置变化的方法

    2022-03-29 14:24:17
  • mybatis使用pagehelper插件过程详解

    2023-02-16 18:11:11
  • Android简单实现启动画面的方法

    2022-08-25 17:54:55
  • C#检查字符串是否是合法URL地址的方法

    2022-08-09 16:24:06
  • C#实现winform渐变效果的方法

    2023-03-14 00:26:06
  • WPF使用DrawingContext实现绘制刻度条

    2023-06-19 08:35:17
  • java读取xml配置参数代码实例

    2023-11-25 03:03:17
  • Spring整合mybatis实现过程详解

    2022-05-23 02:10:23
  • 完美解决springboot项目出现”java: 错误: 无效的源发行版:17“问题(图文详解)

    2023-08-29 02:15:32
  • Android平台基于Pull方式对XML文件解析与写入方法详解

    2021-07-21 01:52:52
  • C#中ListView控件实现窗体代码

    2023-02-04 02:55:06
  • Java集合之Map接口的实现类精解

    2023-10-07 15:10:37
  • Android自定义带动画的半圆环型进度效果

    2022-02-08 09:31:15
  • Android UI设计系列之自定义TextView属性实现带下划线的文本框(4)

    2022-08-11 11:03:29
  • springboot打包部署到linux服务器的方法

    2021-09-26 14:56:14
  • asp之家 软件编程 m.aspxhome.com