概述 ProcessBuilder类是java.lang包下的基础类,在使用时无需导入,可以直接使用。它主要用于创建和运行各类外部程序,例如javac,java等等。
构造方法 ProcessBuilder(List command),ProcessBuilder(String… command)
常用方法
- void command(String… command) 用于将待执行命令及参数传递给它;
- Process start() 执行命令并返回一个Process对象,用于获取对执行程序的输入和输出;
- void directory(File base) 用于设置待执行命令的工作目录,可以不设置;
public class ProcessUtil {public static void process(String... command) throws Exception {process((File)null, command);
}public static void process(List> commandList) throws Exception {
process((File)null, (String[])commandList.toArray(new String[0]));
}public static void process(File base, String... command) throws Exception {
ProcessBuilder processBuilder = new ProcessBuilder(new String[0]);
if (base != null) {
processBuilder.directory(base);
}
processBuilder.command(command);
Process process = processBuilder.start();
添加一个input2string()方法,用于将执行程序获得的输出转换为String对象,便于输出,例如,
public static String input2str(InputStream inputStream) throws UnsupportedEncodingException {ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
try {
int len;
while((len = inputStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inputStream.close();
} catch (IOException var5) {
var5.printStackTrace();
}
return outSteam.toString("utf-8");
}
【#|03Java常用API-15. ProcessBuilder类以及使用】作为一个JAVA底层类,使开发者能够与操作系统进行强大的互动,而且在使用它进行系统命令的调用时,能够在后台进行,不会有使用Runtime类时弹出cmd命令执行框的困扰。
推荐阅读
- 数据结构和算法|LeetCode 的正确使用方式
- #|7.分布式事务管理
- #|算法设计与分析(Java实现)——贪心算法(集合覆盖案例)
- #|算法设计与分析(Java实现)—— 动态规划 (0-1 背包问题)
- #|阿尔法点亮LED灯(一)汇编语言
- #|Multimedia
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- 基础课|使用深度优先搜索(DFS)、广度优先搜索(BFS)、A* 搜索算法求解 (n^2 -1) 数码难题,耗时与内存占用(时空复杂度)对比(附((n^2 - 1) 数码问题控
- #|学习笔记 | Ch05 Pandas数据清洗 —— 缺失值、重复值、异常值
- win10|搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。