Tiger系列一:從XML中加載屬性
Tiger系列二:Tiger語言新特性
Tiger系列三:Annotation第一部分:使用內置的Annotation
Tiger系列四:Annotation第二部分:定制Annotation
Tiger系列五:訪問環境變量和調用子進程
System.getenv()方法可以方便的訪問平臺的環境變量,但從一開始就遭到反對而被拋棄,因為該方法違背了“編寫一次,隨處運行”的原則。在Tiger版本中,又可以使用該方法了。
訪問平臺專有信息并不是一件容易的事。雖然可以使用
Runtime.exec()
創建進程,但由于平臺之間的差異,構造參數集常常令人頭痛不已。
Tiger
提供了新的
ProcessBuilder
類,使得訪問平臺專有信息更加容易。
?
1
、
訪問環境變量
System.getenv()
有兩種方法:
(
1
)指定環境變量名來獲得環境變量值,如下面的例子:
public?class
EnvTest?{
???????
public?static?void
main(String[]?args)?{
???????????System.out.println(System.getenv(
"
JAVA_HOME
"
));
???????}
}
輸出的結果可能是:
c:\jdk1.
5
(
2
)
返回所有環境變量的
Map
對象,下面的例子輸出所有環境變量名和值:
public?class?EnvDump?{
???????public?static?void?main(String[]?args)?{
??????????????for?(Entry?entry?:?System.getenv().entrySet())?{
????????????????System.out.println(entry.getKey()?+?"="?+?entry.getValue());
??????????????}
???????}
}
2
、
ProcessBuilder
l????????
早期
Java
版本允許使用
Runtime
.
exec()
方法創建本機進程,該方法仍然有效,但是因為使用
String
數組作為參數、以
File
參數作為工作目錄,所以定制子進程比較困難
l????????
使用
新的
ProcessBuilder
類
可以簡化這個過程
l????????
下面是一個啟動
EditPlus
的簡單的例子:
public?class
ProcessTest?{
???????
public?static?voidmain(String[]?args)?throws
IOException?{
??????????Process?p
=?newProcessBuilder(“C:\\ProgramFiles\\EditPlus2
\\editplus.exe”).start();
???????}
}
l????????
下面是在執行命令時指定參數的例子:
public?class?ProcessTest?{
???????public?static?void?main(String[]?args)?throws?IOException?{
??????????????Process?p?=?new?ProcessBuilder("ping",?"sina.com.cn").start();
??????????????InputStream?is?=?p.getInputStream();
??????????????BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(is));
??????????????String?line;
??????????????while?((line?=?br.readLine())?!=?null)?{
????????????????System.out.println(line);
??????????????}
???????}
}
ProcessBuilder
提供了
directory()
方法改變進程的工作目錄,
使用
environment()
方法在進程空間中添加和刪除環境變量
,下面是來自
JDK5
的例子:
?ProcessBuilder?pb?=?new?ProcessBuilder("myCommand",?"myArg1",?"myArg2");
?Map<String,?String>?env?=?pb.environment();
?env.put("VAR1",?"myValue");
?env.remove("OTHERVAR");
?env.put("VAR2",?env.get("VAR1")?+?"suffix");
?pb.directory("myDir");
?Process?p?=?pb.start();
posted on 2006-05-09 14:27
OMG 閱讀(267)
評論(0) 編輯 收藏 所屬分類:
Tiger