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

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

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

    love fish大鵬一曰同風(fēng)起,扶搖直上九萬里

    常用鏈接

    統(tǒng)計

    積分與排名

    friends

    link

    最新評論

    在Java中獲取系統(tǒng)屬性(轉(zhuǎn))

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

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

    主站蜘蛛池模板: 日日噜噜噜噜夜夜爽亚洲精品| 亚洲视频在线一区| 精品在线免费观看| 亚洲一区二区三区在线网站| 免费日本黄色网址| 99爱在线精品视频免费观看9| 亚洲一久久久久久久久| 久久99亚洲综合精品首页| 久久久久久精品免费免费自慰| 国产精品亚洲一区二区三区| 日韩精品亚洲人成在线观看 | 国产四虎免费精品视频| 永久免费无码日韩视频| 亚洲乱人伦精品图片| 亚洲中久无码不卡永久在线观看| 四虎在线视频免费观看视频| 一个人看的hd免费视频| 亚洲Av无码一区二区二三区| 亚洲日本一区二区三区在线| 日韩高清免费在线观看| 国产情侣久久久久aⅴ免费| 久久亚洲AV成人无码国产最大| 亚洲天堂中文资源| jlzzjlzz亚洲乱熟在线播放| 最近2019中文字幕免费看最新 | 国产免费观看黄AV片| 67pao强力打造国产免费| 一级毛片大全免费播放下载| 亚洲一区二区无码偷拍| 久久精品国产亚洲AV麻豆网站| 亚洲毛片网址在线观看中文字幕 | 国产在线一区二区综合免费视频| 亚洲a无码综合a国产av中文| 亚洲国产成人久久综合一区| 国产成人亚洲综合色影视| 亚洲 小说区 图片区 都市| 成年在线观看免费人视频草莓| 91麻豆国产免费观看| 最近中文字幕大全免费版在线| 免费福利在线观看| 色欲aⅴ亚洲情无码AV|