理解 ProcessBuilder 这为我们带来了一个新的类 java.lang.ProcessBuilder 。平台的早期版本答应通过 Runtime 类的 exec() 方法创建本机进程。该方法仍然有效,但是因为能以 String 数组作为参数、以 File 参数作为工作目录,所以用这种方法定制子进程比较困难。使用 ProcessBuilder 可以简化这个过程,它提供了 Directory(File) 方法来改变进程的工作目录,可以用 environment() 方法在进程空间中添加和删除环境变量。清单 4 说明了 ProcessBuilder 的一种简单用法,它使用
ipconfig 命令获得 Internet 配置信息。该方法适用于多数平台,否则可以将 ipconfig 改写成所用平台上的工作命令。启动进程构造程序之后,需要获得其 InputStream ,以读入所创建进程的结果。
清单 4. 使用 ProcessBuilder
import java.io.*;
public class ProcessTest {
public static void main(String args[]) throws IOException {
Process p = new ProcessBuilder("ipconfig").start();
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
如清单 5 所示,该程序的运行结果与在命令行中执行 ipconfig 所得到的结果类似(您得到的结果看起来可能有所不同):
清单 5. ProcessBuilder 的输出结果