分為獲取java自身的一些環境變量和和操作系統相關的環境變量。
- 獲取JVM相關的一些變量
在運行時設置一個環境變量 debug 為 true: java -Ddebug=true YourClass
在程序中設置一個環境變量 debug 為 true: System.setProperty( "debug", "true" );
獲取一個環境變量 debug : String debug = System.getProperty( "debug" );
下表中列出了一部分環境變量,這些是 Java 已經定義好的,可以在程序中通過 System.getProperty( "key" ) 來獲取,更多的環境變量請參閱 JDK 文檔。
屬性名 描 述 java.version Java 運行時版本 java.home Java 的安裝目錄 java.class.version Java 類格式的版本號 java.class.path Java 類的查找路徑 java.io.tmpdir 默認的臨時目錄 java.compiler Java 所使用的及時編譯器 java.ext.dirs Java 擴展包的目錄 os.name 操作系統的名稱 os.arch 操作系統的體系結構 os.version 操作系統的版本 file.separator 文件分隔符(Unix 下為'/') path.separator 路徑分隔符(Unix 下為':') line.separator 換行符(Unix 下為'/n') user.name 用戶帳號名 user.home 用戶目錄 user.dir 用戶當前的工作目錄
其他具體的可以參考后面的代碼實例程序。
- 取得操作系統的環境變量
注意,這次是獲取操作系統的環境變量,而不是獲取JVM相關的一些變量。
也許是為了營造JVM就是操作系統平台的氣氛,抑或是為了強調Java的平台無關性,不知幾時起Java已經把System.getenv(String)函數廢棄了。所以一般來說Java只能獲取它自己定義的一些變量,而無法與操作系統的環境變量交互,只能在運行靠java的“-D”參數來設置要傳遞給它的一些變量。
所以唯一的辦法只能先判斷操作系統,然后用操作系統的命令來調出環境變量列表,設法獲得該輸出列表。
- 代碼實現
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.Properties; public class SystemValue { /** * 使用System獲取系統相關的值 */ public static void getSystemProperties() { Properties pp = System.getProperties(); System.out.println("System's Properties:"); System.out.println(); java.util.Enumeration en = pp.propertyNames(); while (en.hasMoreElements()) { String nextE = (String) en.nextElement(); System.out.print(nextE + "=" + pp.getProperty(nextE)); System.out.println(); } } public static void getCustomProperties(String key) { Map map = getEnv(); System.out.println(key + "=" + map.get(key)); } public static Map getEnv() { Map map = new HashMap(); Process p = null; Runtime r = Runtime.getRuntime(); String OS = System.getProperty("os.name").toLowerCase(); System.out.println("OS="+OS); try { if (OS.indexOf("windows 9") > -1) { p = r.exec("command.com /c set"); } else if ((OS.indexOf("nt") > -1) || (OS.indexOf("windows 20") > -1) || (OS.indexOf("windows xp") > -1)) { p = r.exec("cmd.exe /c set"); } else { // Unix p = r.exec("env"); } BufferedReader br = new BufferedReader(new InputStreamReader(p .getInputStream())); String line; while ((line = br.readLine()) != null) { String[] str = line.split("="); map.put(str[0], str[1]); } } catch (IOException ioe) { ioe.printStackTrace(); } return map; } public static void main(String[] args) { // getSystemProperties(); getCustomProperties("JAVA_HOME"); } }