在 Java 中獲取使用者主目錄

Mohammad Irfan 2023年10月12日
  1. 使用 Java 中的 System.getProperty() 方法獲取使用者的主目錄
  2. 使用 Java 中的 Apache CommonsIO 庫獲取使用者的主目錄
  3. 使用 Java 中的 System.getenv() 方法獲取使用者的主目錄
  4. 總結
在 Java 中獲取使用者主目錄

本教程介紹瞭如何在 Java 中獲取使用者主目錄,並列出了一些示例程式碼以指導你完成該主題。

對於多使用者作業系統,每個使用者都有一個檔案系統目錄;該目錄稱為使用者的主目錄。在 Java 中有多種方法可以找到使用者主目錄。讓我們來看看它們中的每一個。

使用 Java 中的 System.getProperty() 方法獲取使用者的主目錄

Java 中的 System 類有一個 Properties 物件,用於儲存當前工作環境的不同屬性和配置。它還儲存使用者的主目錄。

我們可以使用此類的 getProperty() 方法訪問這些屬性。我們需要傳遞我們想要檢視的系統屬性的名稱。在我們的例子中,它將是 user.home

下面的程式碼演示了它是如何工作的。

public class Main {
  public static void main(String[] args) {
    String userHomeDir = System.getProperty("user.home");
    System.out.printf("The User Home Directory is %s", userHomeDir);
  }
}

輸出:

The User Home Directory is C:\Users\Lenovo

如果你很好奇並想檢視所有系統屬性,可以使用 getProperties() 方法。getProperties() 方法的程式碼如下所示。

import java.util.Map;
import java.util.Properties;
public class Main {
  public static void main(String[] args) {
    Properties props = System.getProperties();
    for (Map.Entry<Object, Object> prop : props.entrySet())
      System.out.println("Property: +" + prop.getKey() + "\tValue: " + prop.getValue());
  }
}

使用 Java 中的 Apache CommonsIO 庫獲取使用者的主目錄

Apache Commons 是一個非常強大的庫,可以使用 CommonsIO 庫的 FileUtils 類來獲取主目錄。

我們可以簡單地使用該類的 getUserDirectory() 方法來檢視使用者的主目錄。它返回一個代表主目錄的 File 物件。我們還可以使用 getUserDirectoryPath() 方法獲取主目錄的 String 路徑。

這些方法的程式碼和輸出如下所示。

import java.io.File;
import org.apache.commons.io.FileUtils;
public class Main {
  public static void main(String[] args) {
    File homeDir = FileUtils.getUserDirectory();
    String homeDirPath = FileUtils.getUserDirectoryPath();
    System.out.printf("The User Home Directory is %s\n", homeDir);
    System.out.printf("The path of User Home Directory is %s", homeDirPath);
  }
}

輸出:

The User Home Directory is C:\Users\Lenovo
The path of User Home Directory is C:\Users\Lenovo

使用 Java 中的 System.getenv() 方法獲取使用者的主目錄

System 類的 getenv() 方法用於獲取系統環境變數的值。我們需要傳遞我們想要訪問的環境變數的名稱。

要獲取使用者的主目錄,我們需要使用字串 USERPROFILE。下面的程式演示了 getenv() 方法的工作。

public class Main {
  public static void main(String[] args) {
    String userHomeDir = System.getenv("USERPROFILE");
    System.out.printf("The User Home Directory is %s", userHomeDir);
  }
}

輸出:

The User Home Directory is C:\Users\Lenovo

你也可以使用此方法檢視所有環境變數。如果你想了解有關係統環境變數的更多資訊,請執行以下程式。

import java.util.Map;
public class Main {
  public static void main(String[] args) {
    Map<String, String> envVars = System.getenv();
    for (Map.Entry<String, String> var : envVars.entrySet())
      System.out.println(var.getKey() + " ---> " + var.getValue());
  }
}

總結

在本指南中,我們將學習如何在 Java 中獲取使用者的主目錄。對於執行較舊 Java 版本(Java 8 之前)的某些 Windows 平臺,由於存在 ID 為 4787931 的錯誤,System.getProperty() 方法可能無法提供所需的結果。

另一個類似的錯誤(錯誤 ID 6519127)也存在。因此,getProperty() 方法會產生不良結果。但是,這兩個錯誤都已得到解決。

在大多數情況下,getProperty() 方法可以正常工作,但我們可以使用替代的 System.getenv() 方法來獲取使用者主目錄。

相關文章 - Java Directory