管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

Javaでカレントディレクトリを取得する

Javaで、実行時のカレントパスを取得する

// 実行環境
C:\Users\hoge\java\path_test\class>java -version
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment Temurin-17.0.9+9 (build 17.0.9+9)
OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (build 17.0.9+9, mixed mode, sharing)

// ディレクトリ構成
C:\Users\hoge\java\path_test>tree /f
C:.
├─class
└─jp
    └─euks
        └─pathtest
                PathTest.java

// ソース
C:\Users\hoge\java\path_test>type jp\euks\pathtest\PathTest.java
package jp.euks.pathtest;

public class PathTest {
    public static void main(String[] args) {
        // java.nio.file.Paths.get(".").toAbsolutePath().toString()でも同じ結果が得られる
        var currentDirectory = System.getProperty("user.dir");
        System.out.println("Current working directory : " + currentDirectory);
    }
}

// コンパイル
C:\Users\hoge\java\path_test>javac jp\euks\pathtest\PathTest.java -d class

// ディレクトリ構成(再)
C:\Users\hoge\java\path_test>tree /f
C:. # パス1
├─class # パス2
│  └─jp
│      └─euks
│          └─pathtest
│                  PathTest.class
│
└─jp
    └─euks
        └─pathtest
                PathTest.java

// パス1で実行
C:\Users\hoge\java\path_test>java -cp .\class jp.euks.pathtest.PathTest
Current working directory : C:\Users\hoge\java\path_test

C:\Users\hoge\java\path_test>cd class

// パス2で実行
C:\Users\hoge\java\path_test\class>java -cp . jp.euks.pathtest.PathTest
Current working directory : C:\Users\hoge\java\path_test\class