當程序中需要使用與操作系統相關的變量(例如:文件分隔符、換行符)時,Java提供了System類的靜態方法getenv()和getProperty()用於返回系統相關的變量與屬性,getenv方法返回的變量大多於系統相關,getProperty方法返回的變量大多與java程序有關。
系統屬性和環境變量都是名稱與值之間的映射。兩種機制都能用來將用戶定義的信息傳遞給 Java進程。環境變量產生更多的全局效應,因為它們不僅對Java子進程可見,而且對於定義它們的進程的所有子進程都是可見的。在不同的操作系統上,它們的語義有細微的差別,比如,不區分大小寫。因此環境變量更可能有意料不到的副作用。程序中盡可能使用系統屬性。環境變量應該在需要全局效應的時候使用,或者在外部系統接口要求使用環境變量時使用(比如 PATH)。
1、環境變量getenv() :用於獲取當前系統環境的字符串映射視圖;測試代碼及運行結果如下:
publicclass Test { publicstaticvoid main(String[] args) { Map<String, String> map = System.getenv(); for(Iterator<String> itr = map.keySet().iterator();itr.hasNext();){ String key = itr.next(); System.out.println(key + "=" + map.get(key)); } } }
USERPROFILE :用戶目錄
USERDNSDOMAIN :用戶域
PATHEXT :可執行后綴
JAVA_HOME :Java安裝目錄
TEMP :用戶臨時文件目錄
SystemDrive :系統盤符
ProgramFiles :默認程序目錄
USERDOMAIN :帳戶的域的名稱
ALLUSERSPROFILE :用戶公共目錄
SESSIONNAME :Session名稱
TMP :臨時目錄
Path :path環境變量
CLASSPATH :classpath環境變量
PROCESSOR_ARCHITECTURE :處理器體系結構
OS :操作系統類型
PROCESSOR_LEVEL :處理級別
COMPUTERNAME :計算機名
Windir :系統安裝目錄
SystemRoot :系統啟動目錄
USERNAME :用戶名
ComSpec :命令行解釋器可執行程序的准確路徑
APPDATA :應用程序數據目錄
2、系統屬性getProperty() :當前的系統屬性。測試代碼及運行結果如下:
java.version Java :運行時環境版本 java.vendor Java :運行時環境供應商 java.vendor.url :Java供應商的 URL java.home :Java安裝目錄 java.vm.specification.version: Java虛擬機規范版本 java.vm.specification.vendor :Java虛擬機規范供應商 java.vm.specification.name :Java虛擬機規范名稱 java.vm.version :Java虛擬機實現版本 java.vm.vendor :Java虛擬機實現供應商 java.vm.name :Java虛擬機實現名稱 java.specification.version:Java運行時環境規范版本 java.specification.vendor:Java運行時環境規范供應商 java.specification.name :Java運行時環境規范名稱 java.class.version :Java類格式版本號 java.class.path :Java類路徑 java.library.path :加載庫時搜索的路徑列表 java.io.tmpdir :默認的臨時文件路徑 java.compiler :要使用的 JIT編譯器的名稱 java.ext.dirs :一個或多個擴展目錄的路徑 os.name :操作系統的名稱 os.arch :操作系統的架構 os.version :操作系統的版本 file.separator :文件分隔符 path.separator :路徑分隔符 line.separator :行分隔符 user.name :用戶的賬戶名稱 user.home :用戶的主目錄 user.dir:用戶的當前工作目錄