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();
}
}
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();
}
}
来源:http://www.mamicode.com/info-detail-2884685.html
标签:Java,Process,Builder,调用
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
基于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
![](https://img.aspxhome.com/file/2023/3/117083_0s.png)
java实现水果超市管理系统
2022-02-03 12:52:32
Android使用GPS获取用户地理位置并监听位置变化的方法
2022-03-29 14:24:17
![](https://img.aspxhome.com/file/2023/8/92628_0s.png)
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
![](https://img.aspxhome.com/file/2023/9/116519_0s.gif)
java读取xml配置参数代码实例
2023-11-25 03:03:17
Spring整合mybatis实现过程详解
2022-05-23 02:10:23
![](https://img.aspxhome.com/file/2023/5/71605_0s.png)
完美解决springboot项目出现”java: 错误: 无效的源发行版:17“问题(图文详解)
2023-08-29 02:15:32
![](https://img.aspxhome.com/file/2023/2/108402_0s.png)
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
![](https://img.aspxhome.com/file/2023/3/63653_0s.png)
Android自定义带动画的半圆环型进度效果
2022-02-08 09:31:15
Android UI设计系列之自定义TextView属性实现带下划线的文本框(4)
2022-08-11 11:03:29
![](https://img.aspxhome.com/file/2023/2/137862_0s.png)
springboot打包部署到linux服务器的方法
2021-09-26 14:56:14
![](https://img.aspxhome.com/file/2023/2/132102_0s.png)