1. 通過System.getProperty()可以獲取系統的配置信息,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 | 用戶的當前工作目錄 |
2. 示例:
public class SystemPropertyTest {
public static void main(String[] args) {
String[] keys = { "java.version", "java.vendor", "java.vendor.url", "java.home",
"java.vm.specification.version", "java.vm.specification.vendor", "java.vm.specification.name",
"java.vm.version", "java.vm.vendor", "java.vm.name", "java.specification.version",
"java.specification.vendor", "java.specification.name", "java.class.version", "java.class.path",
"java.library.path", "java.io.tmpdir", "java.compiler", "java.ext.dirs", "os.name", "os.arch",
"os.version", "file.separator", "path.separator", "line.separator", "user.name", "user.home",
"user.dir" };
for (String key : keys) {
String value = System.getProperty(key);
System.out.println(key + " : " + value);
}
}
}
打印結果:
java.version : 1.8.0_121 java.vendor : Oracle Corporation java.vendor.url : http://java.oracle.com/ java.home : C:\Program Files (x86)\Java\jdk1.8.0_121\jre java.vm.specification.version : 1.8 java.vm.specification.vendor : Oracle Corporation java.vm.specification.name : Java Virtual Machine Specification java.vm.version : 25.121-b13 java.vm.vendor : Oracle Corporation java.vm.name : Java HotSpot(TM) Client VM java.specification.version : 1.8 java.specification.vendor : Oracle Corporation java.specification.name : Java Platform API Specification java.class.version : 52.0
java.class.path : E:\workspace\TestCode\build\classes;E:\eclipse\plugins\org.junit_4.11.0.v201303080030\junit.jar;E:\eclipse\plugins\org.hamcrest.core_1.3.0.v201303031735.jar
java.library.path : C:\Program Files (x86)\Java\jdk1.8.0_121\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files (x86)/Java/jre1.8.0_121/bin/client;C:/Program Files (x86)/Java/jre1.8.0_121/bin;C:/Program Files (x86)/Java/jre1.8.0_121/lib/i386;C:\ProgramData\Oracle\Java\javapath;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Lenovo Fingerprint Reader\;C:\Program Files\Lenovo Fingerprint Reader\x86\;C:\Program Files (x86)\Java\jdk1.8.0_121\bin;C:\Program Files (x86)\Java\jdk1.8.0_121\jre\bin;E:\TortoiseSVN\bin;E:\mysql-5.6.24-winx64\bin;E:\apache-maven-3.3.3\bin;C:\Program Files\*** ***;.;;E:\eclipse;;.;;.
java.io.tmpdir : C:\Users\***~1.***\AppData\Local\Temp\ java.compiler : null java.ext.dirs : C:\Program Files (x86)\Java\jdk1.8.0_121\jre\lib\ext;C:\windows\Sun\Java\lib\ext os.name : Windows 7 os.arch : x86 os.version : 6.1 file.separator : \ path.separator : ; line.separator : user.name : ***.*** user.home : C:\Users\***.*** user.dir : E:\workspace\TestCode
我們可以通過 System.getProperty("user.home") 讀取JAVA系統的user.home 屬性的值。
System.getProperty("user.home") 方法先去讀取注冊表中HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders下的 Desktop 鍵值做為 user.dir ,再取它的上一級目錄做為user.home
打開注冊表編輯器,定位到上面的鍵值,你可以發現 Desktop 的值是%USERPROFILE%\桌面 這種形式
C:\Documents and Settings\Administrator\桌面,
%USERPROFILE% 對應 C:\Documents and Settings\%用戶名%。對於 Administrator 用戶,這里取得的 Desktop 自然是 C:\Documents and Settings\Administrator\桌面. 那么 user.home 就應該是C:\Documents and Settings\Administrator
public class PrintHome{ public static void main(String[] args) { System.out.println(System.getProperty("user.home") ); }
有些電腦的注冊表中的Desktop可能變為 %USERPROFILE%\桌面 這種形式。這時我們得到的 user.home 可能會變成 C:\Documents and Settings\Administrator\桌面,這時需要手動修改 Desktop為 %USERPROFILE%\桌面 這種形式

