CodeGym /Java Blog /Toto sisi /在 Java 中獲取環境變量
John Squirrels
等級 41
San Francisco

在 Java 中獲取環境變量

在 Toto sisi 群組發布

什麼是環境變量?

每種計算機編程語言都包含分配唯一內存位置的變量和常量,其中包含程序要使用的信息。常量值不可更改,但變量的值可以更改。環境變量是鍵/值對,其值在程序外部設置,並且它們的引用始終可供程序隨時使用。鍵和值都是字符串。設置和使用環境變量的約定在操作系統和命令行解釋器之間總是不同的。它們始終對系統上運行的每個應用程序全局可用。

例子


PATH = "C:\\WINDOWS\system32;"
這裡的Path是在程序外設置的環境變量,但對運行在 windows 上的每個程序都可用。

用例

正如我們所知,程序中的每個更改都需要執行或重新部署到服務器,這可能會在生產中產生不必要的副作用。所以引入環境變量的主要目的是為了限制這種一次又一次的執行和部署。

Java如何獲取環境變量?

讓我們看看如何在java中獲取環境變量。Java為我們提供了2種在Java程序中獲取環境變量的方法。
  1. 系統.getenv()

  2. 系統.getProperty()

現在讓我們一一詳細了解它們。

系統.getenv()

System.getenv ()方法用於獲取所有環境變量,但如果提供特定鍵名作為參數,則它將獲取其值。 java.lang.System.getenv()總是返回所有可用環境變量的字符串映射。

宣言


public static String getenv(String name)
在這裡,名稱是用於指定我們需要值的鍵的參數。

返回

如果提供的參數未與任何鍵關聯,它將返回鍵的值或 null。如果未傳遞參數,則它將返回所有可用的鍵/值對。

例子


import java.util.Map;
public class SystemGetEnvDemo {

   public static void main(String[] args) {

      // getting value for environment variable "PATH"
      System.out.print("System.getenv(PATH) = ");
      System.out.println(System.getenv("PATH"));

      // getting value for environment variable "TEMP" resulting in null
      System.out.print("System.getenv(TEMP) = ");
      System.out.println(System.getenv("TEMP"));
      
      //getting all environment variables using System.getenv()
      Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));
        }
   }
}

輸出

System.getenv(PATH) = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin System.getenv(TEMP) = null PATH=/usr/local /sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PROGRAMIZ_COMPILER_SERVICE_HOST=10.0.10.151 KUBERNETES_PORT=tcp://10.0.0.1:443 PROGRAMIZ_COMPILER_PORT=tcp://10.0.10.151 :80 TERM=xterm PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP_PROTO=tcp KUBERNETES_SERVICE_HOST=10.0.0.1 PS1= PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP_PORT=80 PROGRAMIZ_COMPILER_WEB_UI_SEV ICE_PORT_80_TCP_ADDR=10.0.14.233 PROGRAMIZ_COMPILER_PORT_80_TCP=tcp://10.0.10.151:80 PROGRAMIZ_COMPILER_PORT_80_TCP_PROTO=tcp PWD=/app KUBERNETES_PORT_443_TCP=tcp://10.0.0.1 :443 PROGRAMIZ_COMPILER_PORT_80_TCP_ADDR=10.0.10.151 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT=tcp://10.0.14.233:80 KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1 PROGRAMIZ_COMPILER_WEB_UI_ SEVICE_SERVICE_HOST=10.0。14.233 PROGRAMIZ_COMPILER_PORT_80_TCP_PORT=80 KUBERNETES_PORT_443_TCP_PROTO=tcp KUBERNETES_SERVICE_PORT=443 PROGRAMIZ_COMPILER_SERVICE_PORT=80 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP=tcp://10.0.14.233:80 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_SERVICE_PORT=80 HOSTNAME=programiz-compiler-deployment-58bfd77477-dtlq8 KUBERNETES_PORT_443_TCP_PORT=443 KUBERNETES_SERVICE_PORT_HTTPS=443 HOME=/home/compiler
根據您的操作系統,您可能會得到不同的輸出。

系統.getProperty()

我們還可以在 Java 中使用java.lang.System.getProperty()來檢索作為參數傳遞給此方法的指定鍵的值。此方法用於檢索系統屬性,即有關本地系統和配置的信息。如果環境變量在 java 中作為系統屬性存在,那麼最好使用System.getProperty()以獨立於平台的方式獲取值。屬性的值可以在運行時更改,但環境變量則不能。

宣言


public String getProperty(String name)
在這裡,名稱是用於指定我們需要值的鍵的參數。

返回

它將返回鍵的值或 null。

例子


import java.lang.*; 
import java.util.Properties; 

public class SystemGetPropertyDemo { 
    public static void main(String[] args) 
    { 
        // getting username system property 
       // using System.getProperty in Java
        System.out.println("user.name: " +  System.getProperty("user.name")); 
        // getting property with key home resulting in null
        // calling system.getproperty()
        System.out.println("home: " + System.getProperty("home")); 
        // getting name of Operating System 
        System.out.println("os.name: " + System.getProperty("os.name")); 
    }
}

輸出

user.name: compiler home: null os.name: Linux

結論

我們希望現在您了解什麼是 Java 中的環境變量以及如何獲取環境變量、它們的用途以及如何使用方法來獲取它們。隨時練習並在需要更多幫助時回來。快樂學習!
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION