在看《java與模式》其中一個例子用到了system.getproperty(String key)
System.getProperty("user.dir");
很奇怪他怎麼知道這個key就是:“user.dir”。百度了半天 很多人都把這些 key 都貼上了。但是具體在哪裡找,翻了半天才找到:
javaSe API 裡 System 這個類裡 getProperties 方法下有這樣的說明:
getProperties
public static Properties getProperties()
-
確定當前的系統屬性。
首先,如果有安全管理器,則不帶參數直接調用其 checkPropertiesAccess
方法。這可能導致一個安全性異常。
將 getProperty(String)
方法使用的當前系統屬性集合作為Properties
對象返回。如果沒有當前系統屬性集合,則先建立並初始化一個系統屬性集合。這個系統屬性集合總是包含以下鍵的值:
鍵 |
相關值的描述 |
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 |
使用者的當前工作目錄 |
系統屬性值中的多個路徑是用平台的路徑分隔字元分隔的。
注意,即使安全管理器不允許執行 getProperties
操作,它可能也會選擇允許執行
getProperty(String)
操作。
-
-
返回:
-
系統屬性
-
拋出:
-
SecurityException
- 如果安全管理器存在並且其
checkPropertiesAccess
方法不允許訪問系統屬性。
-
另請參見:
-
setProperties(java.util.Properties)
,
SecurityException
,
SecurityManager.checkPropertiesAccess()
,
Properties