<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    在Java中獲取系統屬性(轉)

    ?Java語言以其面向對象、跨平臺、可移植性好、安全性高等優點,受到眾多編程人員的青睞,越來越多的人將其作為應用軟件開發語言的首選。?
    在Java應用程序運行時,特別是需要在跨平臺工作環境下運行時,需要確定操作系統類型、用戶JDK版本和用戶工作目錄等隨工作平臺變化的信息,來保證程序正確運行。一般情況下,可以利用JDK提供的系統屬性類(Properties)中的方法,快速地獲取工作環境信息。另外,程序開發人員還可以定義與應用程序相關的系統屬性文件,在用戶程序執行過程中動態地加載程序員定義的屬性文件來控制程序運行。?
    本文通過對系統屬性類的分析,結合實際例子介紹如何定義系統屬性文件,并討論安全策略文件的定義。?
    屬性類?Java?Properties類的繼承關系如下:?
    java.lang.Object?
    +--java.util.Dictionary?
    +--java.util.Hashtable?
    +--java.util.Properties?
    在應用程序開始執行時,程序首先讀取系統的默認屬性。如果定義了用戶屬性文件,則應用程序加載該屬性文件。程序運行過程中可以根據執行情況動態地修改屬性定義,并在程序結束運行前,保存屬性文件。?
    獲取屬性的方法:?
    ●contains(Object?value)、containsKey(Object?key):如果給定的參數或屬性關鍵字在屬性表中有定義,該方法返回True,否則返回False;?
    ●getProperty(String?key)、getProperty(String?key,?String?default):根據給定的屬性關鍵字獲取關鍵字值;?
    ●list(PrintStream?s)、list(PrintWriter?w):?在輸出流中輸出屬性表內容;?
    ●size():返回當前屬性表中定義的屬性關鍵字個數。?
    設置屬性的方法:?
    ●put(Object?key,?Object?value)?:向屬性表中追加屬性關鍵字和關鍵字的值;?
    ●remove(Object?key)?:從屬性表中刪除關鍵字。?
    獲取系統屬性?
    系統屬性是指與用戶程序相關的操作系統配置信息以及軟件信息。通常與用戶程序相關的屬性關鍵字包括:?
    ●file.separator?:?文件分隔符,?Windows環境下為“",Unix環境下為“/”;?
    ●user.home?:用戶主目錄;?
    ●java.home?:Java實時運行環境的安裝目錄;?
    ●java.ext.dirs?:JDK的安裝目錄;?
    ●os.name?:操作系統名稱;?
    ●user.name?:用戶登錄名稱;?
    ●os.version?:操作系統版本;?
    ●path.separator?:當前操作系統的路徑分隔符;?
    ●user.dir?:當前用戶程序所在目錄。?
    下面結合例子說明獲取系統屬性的方法。?
    /*getSystemProperties.java*/?
    import?java.util.Properties;??
    public?class?getSystemProperties?
    {?
    public?static?void?main(String?args[])?
    {??
    //通過獲得系統屬性構造屬性類?prop?
    Properties?prop?=?new?Properties(??
    System.getProperties()?);?
    //在標準輸出中輸出系統屬性的內容?
    prop.list(System.out);?
    }?
    //根據獲取的系統屬性確定程序執行流程?
    ……?
    }?
    上述程序執行后,在Windows環境中產生類似如下的輸出:?
    user.home=C:WIN95?
    java.home=D:JDK1.2JRE?
    java.ext.dirs=D:JDK1.2?
    os.name=Windows?95?
    user.name=Office?
    java.vm.name=Classic?VM?
    os.version=4.10?
    path.separator=;?
    file.separator=?
    user.dir=D:JavaTest?
    屬性文件的操作方法?
    Java程序開發人員可以通過定義屬性文件來設置程序運行的參數。屬性文件是程序外部文件,在應用程序初始運行時,可以通過讀取屬性文件來獲取有關程序運行的參數。例如,在程序運行時需要在程序外部控制程序的執行流程,這時可以通過定義屬性文件的方法達到目的。下面結合例子說明屬性文件的操作方法:?
    /*PropertyFile.java*/?
    //引入相關類?
    import?java.io.*;?
    import?java.util.Properties;?
    public?class?PropertyFile?
    {?
    //定義文件輸入和輸出流?
    static?FileInputStream?fis;?
    static?FileOutputStream?fos;?
    public?static?void?main(String?args[])?
    {??
    //生成新的屬性對象?
    Properties?prop?=?new?Properties();?
    try?
    {??
    //生成文件輸入和輸出流,輸入流指向用戶已經定義的屬性文件,輸出流指向由應用程序新定義的屬性文件?
    fis?=?new?FileInputStream?
    (“firstProp.txt”);?
    fos?=?new?FileOutputStream?
    (“secondProp.txt”);?
    }?
    catch(FileNotFoundException?e)?
    {?
    System.out.println(“Cannot?create?the?file?stream”);?
    }?
    try?
    {?
    //從輸入文件加載系統屬性?
    prop.load(fis);?
    //根據程序執行情況更改屬性關鍵字的值?
    prop.put(“Switch”,“1”);?
    //輸出新屬性文件secondProp.txt?
    prop?.save?(?fos?,“--?a?new?properties?file-”);?
    }?
    catch(IOException?e)?
    {?
    System.out.println(“Exception?in?repleace?the?keyword”);?
    }?
    }?
    }?
    在程序執行之前,用戶必須首先定義屬性文件firstProp.txt,該文件內容如下:?
    Switch=?0?
    Version=?1.0?
    Directory=?JavaTest?
    程序運行后,輸出新的屬性文件secondProp.txt,該文件內容如下(注意觀察兩個文件關鍵字Switch內容的區別):?
    #--a?new?properties?file--?
    #Sun?Mar?11?21:22:40?CST?2001?
    Switch=?1?
    Version=?1.0?
    Directory=?JavaTest?
    從上例可以看出,通過JDK提供的屬性類Properties可以方便地在程序外部對應用程序的執行流程進行控制,從而簡化了編程難度,使程序流程可控性更好。?
    安全策略文件?
    Java提供的應用程序環境的安全策略,使得不同的代碼對系統資源擁有不同的訪問許可。Java應用程序安全策略由Policy對象來表達,通過定義安全策略文件來實現。Java?1.2的安全策略文件分為三級:系統安全策略文件、用戶安全策略文件和缺省安全策略文件。當Java應用程序啟動后,按照先后順序加載安全策略內容。下面結合典型的安全策略文件內容對安全策略文件的定義進行說明:?
    grant?
    {??
    //對系統和用戶目錄設置“讀”的權限?
    permission?java.util.PropertyPermission?“user.dir”,?
    “read”;?
    permission?java.util.PropertyPermission?“user.home”,“read”;?
    permission?java.util.PropertyPermission?“java.home”,“read”;?
    permission?java.util.PropertyPermission?“java.class.?
    path”,“read”;?
    permission?java.util.PropertyPermission?“user.name”,“read”;?
    //其他安全策略內容?
    };?
    上述安全策略文件定義了應用程序對用戶目錄、用戶登錄目錄、JDK安裝目錄、用戶名稱等系統內容具有讀的權限。

    posted on 2006-06-16 14:47 liaojiyong 閱讀(193) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲午夜无码毛片av久久京东热 | 99re免费在线视频| 亚洲一区爱区精品无码| 人人爽人人爽人人片A免费 | 亚洲AV综合色区无码一区爱AV| 一级做a毛片免费视频| 亚洲人成人无码网www国产| 一区二区三区视频免费| 久久久久亚洲?V成人无码| 中文字幕免费观看视频| 国产精彩免费视频| 四虎永久免费网站免费观看| 国产午夜亚洲精品不卡免下载 | 国产亚洲色婷婷久久99精品91| 国产精品内射视频免费| 亚洲国产婷婷六月丁香| 精品一区二区三区无码免费视频 | 亚洲国产成人超福利久久精品| 中文免费观看视频网站| 亚洲综合久久精品无码色欲| 免费观看大片毛片| av电影在线免费看| 久久精品亚洲综合| 在线观看免费播放av片| 亚洲在成人网在线看| 性一交一乱一视频免费看| 四虎影视在线看免费观看| 亚洲国产成人一区二区三区| 亚洲日本在线免费观看| 亚洲AV一区二区三区四区| 亚洲色偷拍区另类无码专区| 日韩在线永久免费播放| 亚洲视频在线观看2018| 亚洲精品tv久久久久| 久久国产高潮流白浆免费观看| 一区二区亚洲精品精华液| 亚洲精品天堂成人片?V在线播放| 国产成人免费视频| 色婷婷亚洲一区二区三区| 亚洲Av综合色区无码专区桃色| 青青青青青青久久久免费观看|