理解 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 的輸出結果