OMG,到底在尋找什么..................
          (構造一個完美的J2EE系統所需要的完整知識體系)
          posts - 198,  comments - 37,  trackbacks - 0

          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 閱讀(272) 評論(0)  編輯  收藏 所屬分類: Tiger

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2006年5月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          IT風云人物

          文檔

          朋友

          相冊

          經典網站

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 景洪市| 榆树市| 朝阳县| 永春县| 清徐县| 江达县| 白玉县| 烟台市| 磴口县| 鄂托克旗| 郓城县| 东乌珠穆沁旗| 涞源县| 建湖县| 红安县| 石屏县| 乡城县| 什邡市| 武山县| 安达市| 玉门市| 遂宁市| 富阳市| 原平市| 册亨县| 南投县| 洮南市| 香河县| 平定县| 大姚县| 南汇区| 邵阳县| 合江县| 唐山市| 濉溪县| 定南县| 巢湖市| 万山特区| 宿松县| 垦利县| 富平县|