Java的ProcessBuilder类
介绍
Java中的ProcessBuilder类用于创建进程,可以启动一个进程,并与之进行交互。ProcessBuilder类定义了以下一些重要的方法:
ProcessBuilder(String... command)
:创建一个新的ProcessBuilder对象,使用指定的命令和参数。
start()
:使用此ProcessBuilder创建一个新进程,并返回一个表示该进程的Process对象。
redirectErrorStream(boolean redirect)
:合并标准错误流和标准输出流,如果为true,则将标准错误流合并到标准输出流中,否则将标准错误流和标准输出流分别处理。
directory(File directory)
:设置此ProcessBuilder的工作目录,即运行进程时的当前目录。
environment()
:返回此ProcessBuilder的环境变量映射。
command(String... command)
:设置此ProcessBuilder的命令和参数,覆盖之前设置的命令和参数。
inheritIO()
:将此ProcessBuilder的进程的标准输出流和标准错误流与当前Java进程的标准输出流和标准错误流相同。
redirectInput(File file)
:将此ProcessBuilder的进程的标准输入流重定向到指定文件。
redirectOutput(File file)
:将此ProcessBuilder的进程的标准输出流重定向到指定文件。
通过ProcessBuilder类,我们可以启动并执行外部进程,例如执行命令行命令、启动其他程序等。同时,还可以通过该类的方法来控制和管理进程的输入输出流、环境变量等。
使用ProcessBuilder类启动并执行外部进程
可以使用ProcessBuilder类启动并执行外部进程,例如执行命令行命令、启动其他程序等。
下面是一个demo,展示了如何使用ProcessBuilder类执行命令行命令:
import java.io.IOException;
import java.util.*;
public class ProcessBuilderExample {
public static void main(String[] args) {
try {
// 创建一个ProcessBuilder对象,使用指定的命令和参数
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
// 设置此ProcessBuilder的工作目录,即运行进程时的当前目录
pb.directory(new java.io.File("C:\\"));
// 启动此ProcessBuilder创建的进程
Process process = pb.start();
// 读取进程的输出流
Scanner scanner = new Scanner(process.getInputStream());
while (scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
// 等待进程执行完毕
int exitCode = process.waitFor();
System.out.println("Process exited with code " + exitCode);
} catch (IOException | InterruptedException ex) {
System.err.println(ex);
}
}
}