Java ProcessBuilder 教程显示了如何使用ProcessBuilder
创建操作系统进程。
ProcessBuilder
ProcessBuilder 用于创建操作系统进程。 其start()
方法创建具有以下属性的新Process
实例:
- 命令
- 环境
- 工作目录
- 输入来源
- 标准输出和标准错误输出的目标
- redirectErrorStream
ProcessBuilder
运行程序
用command()
执行程序。 使用waitFor()
,我们可以等待过程完成。
ExecuteProgram.java
该程序执行 Windows 记事本应用。 它返回其退出代码。
ProcessBuilder
命令输出
以下示例执行命令并显示其输出。
ProcessBuilderEx.java
该示例运行 Linux cal
命令。
command()
执行cal
程序。 其他参数是程序的选项。 为了在 Windows 机器上运行命令,我们可以使用以下命令:processBuilder.command("cmd.exe", "/c", "ping -n 3 google.com")
。
start()
启动了该过程。
使用getInputStream()
方法,我们从流程的标准输出中获取输入流。
这是输出。
ProcessBuilder
重定向输出
使用redirectOutput()
,我们可以重定向流程构建器的标准输出目的地。
RedirectOutputEx.java
该程序将构建器的输出重定向到文件。 它运行 Windows date
命令。
我们将流程构建器的标准输出重定向到文件。
现在输出到文件。
当前日期已写入output.txt
文件。
ProcessBuilder
重定向输入和输出
下一个示例同时重定向输入和输出。
src/resources/input.txt
这是input.txt
文件的内容。
ProcessBuilderRedirectIOEx.java
在程序中,我们将输入从input.txt
文件重定向到cat
命令,并将命令的输出重定向到output.txt
文件。
ProcessBuilder
继承 IO
inheritIO()
将子流程标准 I / O 的源和目的地设置为与当前 Java 流程相同。
ProcessBuilderInheritIOEx.java
通过继承已执行命令的 IO,我们可以跳过读取步骤。 程序输出项目目录的内容和显示退出代码的消息。
我们同时获得执行的命令和自己的 Java 程序的输出。
ProcessBuilder
环境
environment()
方法返回流程构建器环境的字符串映射视图。
ProcessBuilderEnvEx.java
该程序显示所有环境变量。
这是 Windows 上的示例输出。
在下一个程序中,我们定义一个自定义环境变量。
ProcessBuilderEnvEx2.java
该程序定义一个mode
变量并在 Windows 上输出。
%mode%
是 Windows 的环境变量语法; 在 Linux 上,我们使用$mode
。
ProcessBuilder
目录
directory()
方法设置流程构建器的工作目录。
ProcessBuilderDirectoryEx.java
该示例将主目录设置为流程生成器的当前目录。 我们显示主目录的内容。
我们得到用户的主目录。
我们定义了一个在 Windows 上执行dir
程序的命令。
我们设置流程构建器的目录。
这是一个示例输出。
ProcessBuilder
非阻塞操作
在下面的示例中,我们创建一个异步过程。
ProcessBuilderNonBlockingEx.java
该程序创建一个在控制台上运行 ping 命令的进程。 它在Executors.newSingleThreadExecutor()
方法的帮助下在单独的线程中执行。
这是输出。
ProcessBuilder
管道操作
管道是一种用于将信息从一个程序进程传递到另一个程序进程的技术。
ProcessBuilderPipeEx.java
该示例通过管道(|)将信息从dir
命令发送到grep
命令。
This is the output.
在本教程中,我们使用 Java 的ProcessBuilder
执行 OS 进程。