2013年11月17日 星期日

透過 getenv 與 getProperties 取得系統環境變數與JVM屬性設定

      在 Java 中我們可以透過 System.getProperties() 取得 JVM 參數設定System.getenv() 來取得作業系統的環境變數設定。你可以在 The Java Tutorials 裡面參考 System Properties 與 Environment Variables 教學文章看到其他用法。

     如果你使用 Eclipse 你可以透過 -D<Key>=<Value> 的方式在 Run > Run Configurations... > (x)= Arguments > VM Arguments 來設定額外的 JVM 屬性設定。例如你可以填入 -DColor=blue 來設定 Color 屬性為 blue。如下圖所示:


簡易的範例程式如下:
    // 列出目前所有的 JVM 屬性設定
    System.getProperties().list(System.out); 
    
    // 透過 getProperty 單獨取出特定的某個屬性設定值    
    System.out.println("Color = " + System.getProperty("file.separator"));    

    // 取出我們設定的屬性值,注意屬性名稱是 case sensitive
    // 如果你寫成 color 得到的會是 null
    System.out.println("Color = " + System.getProperty("Color"));

    // 你也可以使用下列方式,當所指定的屬性沒有鍵值時,回傳你所設定的預設值
    // 下面的範例當沒有設定 Color 屬性鍵值時會回傳預設的 Pink 值
    System.out.println("Color = " + System.getProperty("Color", "Pink")); 

    // 列出目前作業系統所有的環境變數設定
    Set<Map.Entry<String, String>> envSet = System.getenv().entrySet();
    for (Map.Entry<String, String> set: envSet) {
        System.out.println(set.getKey() + " = " + set.getValue());
    }
    // 透過 System.getenv(key) 的方式單獨取出你想要的屬性設定
    System.out.println("SystemDrive = " + System.getenv("SystemDrive"));
    System.out.println("TEMP = " + System.getenv("TEMP"));


參考文章:



沒有留言: