1. ホーム
  2. java

[解決済み] Javaでカレントワーキングディレクトリを取得する方法は?

2022-05-13 02:43:24

質問

例えば、私のメインクラスが C:\Users\Justian\Documents\ . にあることを示すにはどうしたらよいでしょうか? C:\Users\Justian\Documents ?

ハードコーディングという選択肢はありません-他の場所に移動しても適応できるようにする必要があります。

私は、フォルダ内の CSV ファイルの束をダンプし、プログラムにすべてのファイルを認識させ、データをロードしてそれらを操作したいのです。私は本当に、そのフォルダーに移動する方法を知りたいだけなのです。

どのように解決するのですか?

一つの方法として システム・プロパティ System.getProperty("user.dir"); これで、プロパティが初期化されたときの現在の作業ディレクトリが得られます。これはおそらくあなたが欲しいものでしょう。 java コマンドが発行された場所、この場合は処理するファイルがあるディレクトリですが、実際の .jar ファイルはマシン上の別の場所に存在する可能性があります。実際の .jar ファイルのディレクトリを持つことは、ほとんどの場合、それほど有益ではありません。

以下は、.classファイルや.jarファイルがどこにあるかにかかわらず、コマンドが呼び出された現在のディレクトリを出力します。

public class Test
{
    public static void main(final String[] args)
    {
        final String dir = System.getProperty("user.dir");
        System.out.println("current dir = " + dir);
    }
}  

にある場合は /User/me/ にあり、上記のコードを含む .jar ファイルが /opt/some/nested/dir/ とすると、コマンド java -jar /opt/some/nested/dir/test.jar Test は出力します。 current dir = /User/me .

また、良いオブジェクト指向のコマンドライン引数パーサーを使用することも検討すべきです。 私が強くお勧めするのは JSAP という Java Simple Argument Parser をお勧めします。これを使うと System.getProperty("user.dir") を使い、代わりに何か他のものを渡してその動作を上書きすることができます。より保守性の高いソリューションです。これにより、処理するディレクトリを渡すのが非常に簡単になります。 user.dir にフォールバックできるようになります。