1 需求
2 接口
Class ProcessBuilder
public final class ProcessBuilder extends Object
java.lang.Object
java.lang.ProcessBuilder
- Constructor Detail
- public ProcessBuilder(String... command)
- public ProcessBuilder(List<String> command)
- Method Detail
- public List<String> command()
- public ProcessBuilder command(String... command)
- public ProcessBuilder command(List<String> command)
- public File directory()
- public ProcessBuilder directory(File directory)
- public Map<String,String> environment()
- public ProcessBuilder inheritIO()
- public Process start() throws IOException
3 示例
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("notepad");
processBuilder.start();
}
}
3.X 示例
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExecuteCommand {
public static void main(String[] args) throws IOException {
// 要执行的系统命令
String command = "ls -l";
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("bash", "-c", command);
try {
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line).append("\n");
System.out.println(output.toString()); // 输出实时结果到控制台
}
int exitCode = process.waitFor();
System.out.println("Exit Code: " + exitCode);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3.X 示例
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class CommandExecution {
public static void main(String[] args) {
try {
// 创建ProcessBuilder对象,并设置要执行的命令
ProcessBuilder processBuilder = new ProcessBuilder("ping", "www.google.com");
// 启动进程并执行命令
Process process = processBuilder.start();
// 获取命令执行的输入流
InputStream inputStream = process.getInputStream();
// 创建BufferedReader对象来读取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
// 读取命令执行的输出
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令执行完成
int exitCode = process.waitFor();
// 输出命令执行的退出码
System.out.println("Exit Code: " + exitCode);
// 关闭输入流和读取器
reader.close();
inputStream.close();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
4 参考资料
Java 使用ProcessBuilder执行调用命令方法及示例代码_哔哩哔哩_bilibili
Java 通过ProcessBuilder或Runtime.exec()调用(cmd/sh)系统命令方法代码_哔哩哔哩_bilibili