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