Index > Windowsにおいて、Javaプログラムからユーザのホームディレクトリを取得する方法
Fri, June 8, 2007

Windowsにおいて、Javaプログラムからユーザのホームディレクトリを取得する方法

開発したアプリケーションで扱う設定ファイルやデータは ユーザに依存した情報なので、ユーザのホームディレクトリに保存するのが行儀の良い作法です。

Windows でユーザのホームディレクトリを取得する

WindowsXPなどでは、コマンドプロンプトなどで 以下のようにすると、ホームディレクトリが表示されます。 (ユーザ名:foo の場合)

> echo %USERPROFILE%
C:\Documents and Settings\foo

ですから、開発したアプリケーションは、この%USERPROFILE% という変数を使って 各種設定ファイル・データの保存場所を決めればよい。

しかし、Javaで書いたアプリケーションの場合、 %USERPROFILE% という変数に(たぶん)アクセスできないので どうすればいいのだろう、とかなり前から悩んでいたのだが、 最近になって、java.lang.System クラスの getProperty() メソッド経由で この値が取得できることが判明。

具体的には次のようにすればよい。

具体的な方法

System.getProperty()メソッドでユーザのホームディレクトリを取得。

String userProfile=System.getProperty("user.home");
System.out.println( userProfile );

その他にも実行環境(OS)に依存したさまざまな情報が System.getProperty()メソッドを使って取得できることが判明。

今までは、テキストファイルの改行コードの取得に System.getProperty("line.separator"); と、するということは知っていたが、それ以上のことを意識したことがなかった。

そこで、System.getProperty()メソッドから、どんな情報が取得できるのか 調べてみた。

import java.util.*;
public class Test{
    public static void main(String[] s){
        Properties hash=System.getProperties();
        Enumeration enu=hash.keys();
        while(enu.hasMoreElements()){
            Object key=enu.nextElement();
            System.out.println(key+"\t\t"+System.getProperty((String)key));
        }
    }
}

このコードをTest.javaで保存して、

$ javac Test.java
$ java Test

とすれば大量の環境情報がコンソールに標準出力されます。

 Twitter
follow me on Twitter
 Categories