| 導購 | 订阅 | 在线投稿
分享
 
 
 

使用技巧:Java應用過程中獲取系統屬性

2008-10-30 08:14:13  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
  Java語言以其面向對象、跨平台、可移植性好、安全性高等優點,受到衆多編程人員的青睐,越來越多的人將其作爲應用軟件開發語言的首選。

  在Java應用程序運行時,特別是需要在跨平台工作環境下運行時,需要確定操作系統類型、用戶JDK版本和用戶工作目錄等隨工作平台變化的信息,來保證程序正確運行。一般情況下,可以利用JDK提供的系統屬性類(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.2\JRE

  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對象來表達,通過定義安全策略文件來實現。Java1.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」;

  //其他安全策略內容

  };
 
Java語言以其面向對象、跨平台、可移植性好、安全性高等優點,受到衆多編程人員的青睐,越來越多的人將其作爲應用軟件開發語言的首選。 在Java應用程序運行時,特別是需要在跨平台工作環境下運行時,需要確定操作系統類型、用戶JDK版本和用戶工作目錄等隨工作平台變化的信息,來保證程序正確運行。一般情況下,可以利用JDK提供的系統屬性類(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.2\JRE 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對象來表達,通過定義安全策略文件來實現。Java1.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」; //其他安全策略內容 };
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
  免責聲明:本文僅代表作者個人觀點,與王朝網絡無關。王朝網絡登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
© 2005- 王朝網路 版權所有