GB | BIG5
|
| 首頁 > 編程技術 > Java > 正文 |
 |
| 在Java中獲取系統屬性 |
| 本文出自:www.chinajavaworld.com 作者: 蘇洋 (2002-01-01 08:10:00) |
|
Java語言以其面向對象、跨平台、可移植性好、安全性高等優點,受到眾多編程人員的青睞,越來越多的人將其作為應用軟件開發語言的首選。 | |
在Java應用程序運行時,特別是需要在跨平台工作環境下運行時,需要確定操作系統類型、用戶JDK版本和用戶工作目錄等隨工作平台變化的信息,來保証程序正確運行。一般情況下,可以利用JDK提供的系統屬性類(Properties)中的方法,快速地獲取工作環境信息。另外,程序開發人員還可以定義與應用程序相關的系統屬性文件,在用戶程序執行過程中動態地加載程序員定義的屬性文件來控制程序運行。 |
|
本文通過對系統屬性類的分析,結合實際例子介紹如何定義系統屬性文件,並討論安全策略文件的定義。 |
|
屬性類
Java 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環境下為“/”; |
|
●java.home :Java實時運行環境的安裝目錄; |
|
●java.ext.dirs :JDK的安裝目錄; |
|
●path.separator :當前操作系統的路徑分隔符; |
|
/*getSystemProperties.java*/ |
|
import java.util.Properties; |
|
public class getSystemProperties |
|
public static void main(String args[]) |
|
Properties prop = new Properties( |
|
System.getProperties() ); |
|
上述程序執行,在Windows環境中產生類似如下的輸出: |
|
Java程序開發人員可以通過定義屬性文件來設置程序運行的參數。屬性文件是程序外部文件,在應用程序初始運行時,可以通過讀取屬性文件來獲取有關程序運行的參數。例如,在程序運行時需要在程序外部控制程序的執行流程,這時可以通過定義屬性文件的方法達到目的。下面結合例子說明屬性文件的操作方法: |
|
import java.util.Properties; |
|
public class PropertyFile |
|
static FileInputStream fis; |
|
static FileOutputStream fos; |
|
public static void main(String args[]) |
|
Properties prop = new Properties(); |
|
//生成文件輸入和輸出流,輸入流指向用戶已經定義的屬性文件,輸出流指向由應用程序新定義的屬性文件 |
|
fis = new FileInputStream |
|
fos = new FileOutputStream |
|
catch(FileNotFoundException e) |
|
System.out.println(“Cannot create the file stream”); |
|
prop .save ( fos ,“-- a new properties file-”); |
|
System.out.println(“Exception in repleace the keyword”); |
|
在程序執行之前,用戶必須首先定義屬性文件firstProp.txt,該文件內容如下: |
|
程序運行,輸出新的屬性文件secondProp.txt,該文件內容如下(注意觀察兩個文件關鍵字Switch內容的區別): |
|
#--a new properties file-- |
|
#Sun Mar 11 21:22:40 CST 2001 |
|
從上例可以看出,通過JDK提供的屬性類Properties可以方便地在程序外部對應用程序的執行流程進行控制,從而簡化了編程難度,使程序流程可控性更好。 |
|
Java提供的應用程序環境的安全策略,使得不同的代碼對系統資源擁有不同的訪問許可。Java應用程序安全策略由Policy對象來表達,通過定義安全策略文件來實現。Java 1.2的安全策略文件分為三級:系統安全策略文件、用戶安全策略文件和缺省安全策略文件。當Java應用程序啟動,按照先順序加載安全策略內容。下面結合典型的安全策略文件內容對安全策略文件的定義進行說明: |
|
permission java.util.PropertyPermission “user.dir”, |
|
permission java.util.PropertyPermission “user.home”,“read”; |
|
permission java.util.PropertyPermission “java.home”,“read”; |
|
permission java.util.PropertyPermission “java.class. |
|
permission java.util.PropertyPermission “user.name”,“read”; |
|
 |
★ 樊強制作 歡迎分享 ★ |