1.System.getenv() 方法是獲取指定的環境變量的值。它有兩種方法,一種是接收參數為任意字符串,當存在指定環境變量時即返回環境變量的值,否則返回null。另外一種是不接受參數,那么返回的是所有的環境變量。下面是它們的源碼
(1)接收參數為任意字符串
public static String getenv(String name) { SecurityManager sm = getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("getenv."+name)); } return ProcessEnvironment.getenv(name); }
(2)不接受參數
public static java.util.Map<String,String> getenv() { SecurityManager sm = getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("getenv.*")); } return ProcessEnvironment.getenv(); }
注意:環境變量的修改的兩種情況:修改環境變量之后,如果受影響的是應用程序,那么只要簡單地重新啟動此應用程序,環境變量的修改就會反映到該程序中,而不必重新啟動計算機;但是,如果受影響的是系統服務,就必須重新啟動才能將環境變量的修改反映到系統服務中(因為沒有辦法在不重啟計算機的情況下重新啟動系統服務管理器)。
2.System.getProperty() 是獲取系統的相關屬性,包括文件編碼、操作系統名稱、區域、用戶名等,此屬性一般由jvm自動獲取,不能設置。這個必須接受一個String類型的參數,返回值的類型也是String,如果想獲取所有的系統的相關屬性值可以使用System.getProperties()。
(1)System.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 | 文件分隔符(在 UNIX 系統中是“/” ) |
path.separator | 路徑分隔符(在 UNIX 系統中是“:” ) |
line.separator | 行分隔符(在 UNIX 系統中是“/n” ) |
user.name | 用戶的賬戶名稱 |
user.home | 用戶的主目錄 |
user.dir | 用戶的當前工作目錄 |
3.代碼如下:
import java.util.Iterator; import java.util.Map; import java.util.Properties; public class SystemEvnTest { public static void main(String[] args) { for(Map.Entry entry:System.getenv().entrySet()){ System.out.println(entry.getKey()+"-->"+entry.getValue()); } System.out.println("-----------------"); Properties p = System.getProperties(); for ( Iterator it = p.keySet().iterator(); it.hasNext(); ) { String key = (String ) it.next(); String value = (String ) p.get(key); System.out.println(key +":" +value); } } }