Java で現在の作業ディレクトリを取得する方法

Mohammad Irfan 2023年10月12日
  1. Java の System.getProperty() メソッドを用いて現在の作業ディレクトリを取得する
  2. Java の toAbsolutePath() を用いて現在の作業ディレクトリを取得する
  3. Java の normalize() メソッドを用いたカレントディレクトリの取得
  4. Java の FileSystems.getDefault() メソッドを用いた現在の作業ディレクトリの取得
  5. Java の getAbsoluteFile() メソッドを用いた現在の作業ディレクトリの取得
  6. Java の getClass() メソッドを用いたカレントディレクトリの取得
Java で現在の作業ディレクトリを取得する方法

このチュートリアルでは、カレントディレクトリの取得方法と、それを理解するためのコード例を紹介します。

カレントディレクトリを取得する方法はいくつかありますが、ここでは System.getProperty()toAbsolutePath()FileSystems.getDefault() メソッドなどを利用します。例を見てみましょう。

Java の System.getProperty() メソッドを用いて現在の作業ディレクトリを取得する

System.getProperty() メソッドは、キー(引数)で指定されたシステムプロパティを返します。例えば、user.dir はユーザディレクトリを、os.name はオペレーティングシステムの名前を返します。ここでは、このメソッドを用いて現在のユーザの作業ディレクトリを取得します。以下の例を参照してほしい。

public class SimpleTesting {
  public static void main(String[] args) {
    String directoryName = System.getProperty("user.dir");
    System.out.println("Current Working Directory is = " + directoryName);
  }
}

出力:

Current Working Directory is = D:\eclipse-workspace\corejavaexamples

Java の toAbsolutePath() を用いて現在の作業ディレクトリを取得する

toAbsolutePath() メソッドは任意の場所の絶対パスを取得することができます。ここでは、このメソッドを用いてカレントディレクトリの絶対パスを取得します。以下の例を参照してほしい。

import java.nio.file.Path;
import java.nio.file.Paths;

public class SimpleTesting {
  public static void main(String[] args) {
    Path path = Paths.get("");
    String directoryName = path.toAbsolutePath().toString();
    System.out.println("Current Working Directory is = " + directoryName);
  }
}

出力:

Current Working Directory is = D:\eclipse-workspace\corejavaexamples

Java の normalize() メソッドを用いたカレントディレクトリの取得

normalize() メソッドは、現在のパスから冗長な名前の要素をすべて削除したパスを返します。このメソッドを toAbsolute() メソッドと併用することで、冗長な名前を削除して現在の作業ディレクトリを取得することができます。以下の例を参照してください。

import java.nio.file.Path;
import java.nio.file.Paths;

public class SimpleTesting {
  public static void main(String[] args) {
    Path path = Paths.get("");
    String directoryName = path.toAbsolutePath().normalize().toString();
    System.out.println("Current Working Directory is = " + directoryName);
  }
}

出力:

Current Working Directory is = D:\eclipse-workspace\corejavaexamples

Java の FileSystems.getDefault() メソッドを用いた現在の作業ディレクトリの取得

デフォルトの Filesystem を取得するには FileSystem クラスの getDefault() メソッドを用い、カレントディレクトリの絶対パスを取得するには toAbsolutePath() メソッドを用いることができます。以下の例を参照してください。

import java.nio.file.FileSystems;
import java.nio.file.Path;

public class SimpleTesting {
  public static void main(String[] args) {
    Path path = FileSystems.getDefault().getPath("");
    String directoryName = path.toAbsolutePath().toString();
    System.out.println("Current Working Directory is = " + directoryName);
  }
}

出力:

Current Working Directory is = D:\eclipse-workspace\corejavaexamples

Java の getAbsoluteFile() メソッドを用いた現在の作業ディレクトリの取得

カレントディレクトリの位置を実際に表すカレントファイルの位置を取得するには、getAbsoluteFile() メソッドを使用することができます。以下の例を参照してください。

import java.io.File;

public class SimpleTesting {
  public static void main(String[] args) {
    File file = new File("");
    String directoryName = file.getAbsoluteFile().toString();
    System.out.println("Current Working Directory is = " + directoryName);
  }
}

出力:

Current Working Directory is = D:\eclipse-workspace\corejavaexamples

Java の getClass() メソッドを用いたカレントディレクトリの取得

Java の Object クラスの getClass() メソッドを利用すると、現在実行中のクラスを返すことができ、さらに getPath() メソッドを利用して現在の作業ディレクトリのパスを取得することができます。以下の例を参照してください。

public class SimpleTesting {
  String getCurrentDirectory() {
    return this.getClass().getClassLoader().getResource("").getPath();
  }

  public static void main(String[] args) {
    String directoryName = new SimpleTesting().getCurrentDirectory();
    System.out.println("Current Working Directory is = " + directoryName);
  }
}

出力:

Current Working Directory is = D:\eclipse-workspace\corejavaexamples

関連記事 - Java File