System.getenv()和System.getProperty() 的區別


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);
         }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM