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

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”;

//其他安全策略內容

};

基礎:輕松獲取子網掩碼和默認網關-應用技巧
  在項目實施和網絡設備調試中,我們常常需要找到設備的子網掩碼和默認網關,以便正確的配置路由器、交換機和防火牆等設備。   通過Web查詢獲得   這裏告訴大家一個小竅門:你可以訪問MISCOMP站點,通過Web頁面...查看完整版>>基礎:輕松獲取子網掩碼和默認網關-應用技巧
 
講解VPN配置中關于虛擬站點屬性 -應用技巧
  深入講解VPN配置實例中關于虛擬站點屬性,向大家介紹VPN配置實例的方法,可能好多人還不了解VPN配置實例是如何的,沒有關系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。  控制路由分發  在這一部...查看完整版>>講解VPN配置中關于虛擬站點屬性 -應用技巧
 
ASP應用小技巧之ExpiresAbsolute 屬性
  ExpiresAbsolute 屬性指定緩存于浏覽器中的頁的到期日期和時間  語法Response.ExpiresAbsolute [= ]  參數date 指定頁的到期日期。該值在符合 RFC-1123 日期格式的到期標題中發送。time 指定頁的到期時間。...查看完整版>>ASP應用小技巧之ExpiresAbsolute 屬性
 
VB中使用WMI獲取系統硬件和軟件有關信息
在VB中使用WMI獲取系統硬件和軟件有關信息簡介: WMI是英文Windows Management Instrumentation的簡寫,它的功能主要是:訪問本地主機的一些信息和服務,可以管理遠程計算機(當然你必須要擁有足夠的權限)...查看完整版>>VB中使用WMI獲取系統硬件和軟件有關信息
 
Cisco的路由選擇過程和交換過程-應用技巧
Cisco的路由選擇過程和交換過程-應用技巧
  路由選擇功能(或者說轉發功能)包含兩個相互聯系的過程,用于在網絡中移動信息:  ·通過路由選擇來作出路由決策l  ·通過交換把數據包移到下一個網段上的目的地  圖1-2 路由選擇過程  Cisco IOS 平台既...查看完整版>>Cisco的路由選擇過程和交換過程-應用技巧
 
關于點對點PPP協議的鏈接過程-應用技巧
關于點對點PPP協議的鏈接過程-應用技巧
  在廣闊的網絡空間中,各種協議的使用,支撐了它的強大應用。那麽在這之中,我們應該對點對點PPP協議有所掌握。因爲第2層隧道協議在很大程度上依靠PPP協議的各種特性,因此有必要對PPP協議進行深入的探討。PPP協議...查看完整版>>關于點對點PPP協議的鏈接過程-應用技巧
 
Cisco 3550速率限制的詳細配置過程-應用技巧
一、網絡說明 PC1接在Cisco3550 F0/1上,速率爲1M; PC1接在Cisco3550 F0/2上,速率爲2M; Cisco3550的G0/1爲出口。 二、詳細配置過程 注:每個接口每個方向只支持一個策略;一個策略可以用于多個接口。因此所有...查看完整版>>Cisco 3550速率限制的詳細配置過程-應用技巧
 
技巧:配置Telnet密碼的簡單過程-應用技巧
技巧:配置Telnet密碼的簡單過程-應用技巧
因爲Telnet具有一些安全漏洞,這個也是黑客們常用的一些入侵漏洞。那麽這裏常規的Telnet安全措施就更不能省略。這裏我們就來介紹一下配置Telnet密碼的具體過程吧。當爲網絡設備設置了管理IP地址後,就可以借助"超級終...查看完整版>>技巧:配置Telnet密碼的簡單過程-應用技巧
 
關于VLAN鏈路數據包的轉發過程-應用技巧
關于VLAN鏈路數據包的轉發過程-應用技巧
  交換網絡中,鏈路有兩種類型:接入鏈路(Access)和中繼鏈路(Trunk)  接入鏈路:只是VLAN的成員  中繼鏈路:可以承載多個VLAN  數據幀通過中繼鏈路的變化過程  定理  1 、下面是定義的各種端口類型對各種...查看完整版>>關于VLAN鏈路數據包的轉發過程-應用技巧
 
 
回到王朝網路移動版首頁