Open Java Project

          Keep it simple, Stupid, Less is more

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            20 Posts :: 0 Stories :: 12 Comments :: 0 Trackbacks

          System.getenv()方法可以方便的訪問平臺(tái)的環(huán)境變量,但從一開始就遭到反對(duì)而被拋棄,因?yàn)樵摲椒ㄟ`背了“編寫一次,隨處運(yùn)行”的原則。在Tiger版本中,又可以使用該方法了。

          訪問平臺(tái)專有信息并不是一件容易的事。雖然可以使用 Runtime.exec() 創(chuàng)建進(jìn)程,但由于平臺(tái)之間的差異,構(gòu)造參數(shù)集常常令人頭痛不已。Tiger提供了新的ProcessBuilder類,使得訪問平臺(tái)專有信息更加容易。

           

          1訪問環(huán)境變量

          System.getenv()有兩種方法:

          1)指定環(huán)境變量名來獲得環(huán)境變量值,如下面的例子:

          public class EnvTest {
                 public static void main(String[] args) {
                     System.out.println(System.getenv("JAVA_HOME"));
                 }
          }

          輸出的結(jié)果可能是:

          E:\develop\j2sdk1.4.2_05

          2返回所有環(huán)境變量的Map對(duì)象,下面的例子輸出所有環(huán)境變量名和值:

          public class EnvDump {
                 public static void main(String[] args) {
                        for (Entry entry : System.getenv().entrySet()) {
                          System.out.println(entry.getKey() + "=" + entry.getValue());
                        }
                 }
          }

           

          2ProcessBuilder

          l         早期Java版本允許使用 Runtime.exec() 方法創(chuàng)建本機(jī)進(jìn)程,該方法仍然有效,但是因?yàn)槭褂?/SPAN>String 數(shù)組作為參數(shù)、以 File 參數(shù)作為工作目錄,所以定制子進(jìn)程比較困難

          l         使用新的ProcessBuilder可以簡(jiǎn)化這個(gè)過程

          l         下面是一個(gè)啟動(dòng)EditPlus的簡(jiǎn)單的例子:

          public class ProcessTest {
                 public static void main(String[] args) throws IOException {
                    Process p = new ProcessBuilder(“C:\\Program Files\\EditPlus 2\\editplus.exe”).start();
                 }
          }

          l         下面是在執(zhí)行命令時(shí)指定參數(shù)的例子:

          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);
                        }
                 }
          }

          l         ProcessBuilder提供了 directory() 方法改變進(jìn)程的工作目錄,使用 environment() 方法在進(jìn)程空間中添加和刪除環(huán)境變量,下面是來自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 2005-03-21 22:04 nelson_tu 閱讀(1755) 評(píng)論(0)  編輯  收藏 所屬分類: Tiger系列
          主站蜘蛛池模板: 哈密市| 巫溪县| 左云县| 兴和县| 柳河县| 偏关县| 桂平市| 石柱| 黄陵县| 内江市| 九龙县| 雷波县| 武威市| 安新县| 南涧| 星座| 思茅市| 刚察县| 壶关县| 威信县| 永德县| 抚州市| 邯郸县| 晋宁县| 许昌市| 化德县| 南部县| 万荣县| 虞城县| 石家庄市| 吉木乃县| 香格里拉县| 新平| 镇平县| 奇台县| 新邵县| 定结县| 朝阳区| 农安县| 交城县| 庆元县|