java5引入了ProcessBuilder类,该类的功能于Runtime.exec系列方法相同,都是启动一个进程。
主要区别是:ProcessBuilder是可以更好控制启动的进程,且可以重用;但是exec方法没有这种效果;
ProcessBuilder是从1.5加进来的,而exec系列方法是从1.0开始就有的,后续版本不断的重载这个方法,到了1.5已经有6个之多。
但是,官方的api没有任何文档说明这个两个区别,我想主要的是OO的思想,导致了这个新类的产生,功能上没什么变化
具体内容可以参见java5的api文档或者java in a nutshell
使用ProcessBuilder的例子
package net.java2000.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
public class TestProcessBuilder {
public static void main(String args[]) throws Exception {
ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "dir");
builder.directory(new File("e:/"));
Process process = builder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "GBK");
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running %s is:", Arrays.toString(args));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
总结:
ProcessBuilder为进程提供了更多的控制,例如,可以设置当前工作目录,还可以改变环境参数。而Process的功能相对来说简单的多。
ProcessBuilder是一个final类,有两个带参数的构造方法,你可以通过构造方法来直接创建ProcessBuilder的对象。而 Process是一个抽象类,一般都通过Runtime.exec()和ProcessBuilder.start()来间接创建其实例
分享到:
相关推荐
Java如何基于ProcessBuilder类调用外部程序 Java中的ProcessBuilder类提供了一种方便的方式来调用外部程序。通过ProcessBuilder类,可以轻松地执行外部命令,并获取其输出结果。在本文中,我们将详细介绍如何使用...
Java中的`java.lang.ProcessBuilder`类是在J2SE 1.5版本中引入的,用于创建和管理操作系统的进程。这个类提供了比`java.lang.Process`更精细的控制,允许开发者指定启动进程的工作目录、环境变量以及错误和输出流的...
`ProcessBuilder`类用于创建操作系统进程,每个`ProcessBuilder`实例管理一系列进程属性,通过`start()`方法创建一个新的`Process`实例。 **代码示例** ```java import java.io.BufferedReader; import java.io....
2. **使用Java ProcessBuilder类**:类似Runtime,ProcessBuilder允许更灵活地创建和管理子进程。它可以创建一个命令行进程来执行上述的系统关机命令。 3. **使用第三方库如JNA(Java Native Access)**:JNA允许...
ProcessBuilder 非阻塞是调用是指在 Java 中使用 ProcessBuilder 类来执行外部命令或程序时,如何实现非阻塞调用。 在 Java 中,使用 ProcessBuilder 类可以执行外部命令或程序,例如执行系统命令、运行可执行文件...
- 掌握Java编程,特别是如何使用Java的`ProcessBuilder`或`Runtime.exec()`来执行外部命令。 - 熟悉网络编程,了解如何使用Socket进行进程间的通信。 - 熟悉权限管理和安全实践,因为这涉及到在Java应用中执行...
奎因使用ProcessBuilder运行时在Java中进行非空查询-“计算机娱乐:自动复制自动机”让·米洛(Jean Millo),1972年基本上是在使用ProcessBuilder充当再现代理的全新概念上制作的。 该程序输出自己的源代码,并且...
2. **执行命令**:使用Java的Runtime或ProcessBuilder类执行FFmpeg命令,处理音频和视频文件。 3. **错误处理**:捕获并处理FFmpeg执行过程中的错误输出,确保程序的稳定运行。 4. **日志记录**:记录执行命令及...
在Java中,我们可以使用Runtime类或ProcessBuilder类来执行系统命令。例如,我们可以创建一个方法,将FFmpeg的命令字符串化,然后通过这些类执行: ```java public void executeFFmpegCommand(String command) { ...
在给定的部分内容中,我们看到了一个名为`PrefsDemo`的Java类,该类展示了如何使用JDK1.4中的`Preferences` API来修改注册表。下面是对这段代码的详细解析: 1. **导入必要的包**:首先,代码导入了`java.io.*`和`...
在Java中,我们可以使用Runtime类或ProcessBuilder类来执行操作系统级别的命令。这两种方法都能实现与操作系统的交互,但各自有其特点。 1. 使用Runtime类: ```java Runtime runtime = Runtime.getRuntime(); ...
在Windows环境下,Java提供了一个叫做`java.lang.ProcessBuilder`的类,使得我们能够方便地实现这一功能。这个类允许开发者构建一个命令行进程,并且执行该进程,获取其输出结果。 首先,我们要了解`ProcessBuilder...
在Java中,我们可以使用Runtime类或者ProcessBuilder类来实现这样的功能。 1. **Runtime类**: Runtime类是每个Java应用都有的一个实例,它提供了运行时与操作系统交互的能力。通过`getRuntime()`方法可以获得...
这通常是通过Java的Runtime类或ProcessBuilder类来实现的。本文将详细讲解如何通过Java执行命令行程序,以及在处理过程中可能遇到的线程阻塞问题。 首先,我们来看标题提到的"通过JAVA执行命令行程序"。Java提供了...
二、ProcessBuilder类 `ProcessBuilder`类提供了更灵活的方式来执行命令,可以设置环境变量,工作目录等。创建`ProcessBuilder`实例后,通过`command()`方法添加命令和参数,然后调用`start()`方法执行。 ```java ...
在`PowerOff.java`中,开发者可能使用了Runtime类或ProcessBuilder类来执行外部命令。例如,使用Runtime.exec方法: ```java Runtime.getRuntime().exec("poweroff.exe"); ``` 或者使用ProcessBuilder类: ```...
在Java中,我们可以使用`java.lang.ProcessBuilder`或`Runtime.getRuntime().exec()`来执行系统命令并获取其结果。`ProcessUtil`可能封装了这些功能,提供了更安全、更方便的接口来管理和控制进程。 ### 3. 使用`...
创建和管理`Process`的主要类是`java.lang.ProcessBuilder`。它提供了构造进程命令行、设置工作目录、环境变量等方法,并最终用于启动新进程。 ```java ProcessBuilder pb = new ProcessBuilder("command", "arg1",...
这种需求通常是通过Java的Runtime类或者ProcessBuilder类来实现的。下面将详细介绍如何使用Java执行DOS命令以及相关知识点。 一、Runtime类 Runtime类是每个Java应用程序都有的一个实例,它提供了执行系统命令的...
Java提供了Runtime类和ProcessBuilder类来实现这一目标。 1. **Runtime类**: `Runtime.getRuntime().exec(command)` 是最常用的调用DOS命令的方法。`command` 是一个字符串,包含了要执行的命令和参数。例如,...