Java拓展学习——Process类的学习和使用
一、Process类介绍
在 Java 代码中,Process类
具有以下含义:
Process
是 Java 中的一个类,它表示一个正在执行的本地进程的类。这个类提供了一些方法,允许 Java 程序与操作系统进程进行交互,例如启动一个新的进程、获取进程的输入流和输出流,以及等待进程完成等操作。
通常我们通过 Runtime.getRuntime().exec()
方法,去启动一个外部进程(比如执行一个外部程序、脚本等),然后用Process
类来接收该方法返回的进程实体。
例如:
Process pcs = Runtime.getRuntime().exec(cmds);
//使用 Java 的 Runtime 类执行提前准备好的命令,调用外部的程序。
通过使用 pcs
变量,可以对这个进程进行后续的操作,包括:
pcs.waitFor();
:等待该进程完成执行。pcs.getInputStream()
:获取进程的输入流,以便读取进程的输出。pcs.getOutputStream()
:获取进程的输出流,以便向进程输入数据(如果进程支持)。pcs.getErrorStream()
:获取进程的错误流,以读取进程的错误信息。
使用 Process
类可以方便地在 Java 程序中调用外部程序,并与之进行通信,在这个例子中,就是为了调用一个 Python 程序(通过 Runtime.getRuntime().exec(cmds);
启动),并对该 Python 程序的执行结果进行处理,如读取其输出、等待其完成等操作。
以下是一个简单的代码示例,展示如何使用 Process
类启动一个外部程序:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ProcessExample {
public static void main(String[] args) {
try {
// 启动一个新的进程,例如 Windows 的 dir 命令
Process pcs = Runtime.getRuntime().exec("cmd /c dir");
// 获取进程的输入流,以便读取进程的输出
BufferedReader reader = new BufferedReader(new InputStreamReader(pcs.getInputStream()));
String line;
// 逐行读取进程的输出
while ((line = reader.readLine())!= null) {
System.out.println(line);
}
// 等待进程完成
pcs.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
上述代码解释:
在这个示例中:
Runtime.getRuntime().exec("cmd /c dir");
启动了一个新的进程,这里执行的是 Windows 的dir
命令。BufferedReader reader = new BufferedReader(new InputStreamReader(pcs.getInputStream()));
获取了进程的输入流,并将其包装在BufferedReader
中,以便逐行读取。while ((line = reader.readLine())!= null) {...}
循环读取进程的输出并打印。pcs.waitFor();
等待进程执行完毕。
这样,你就可以通过 Process
类来调用外部程序并处理其输出。