カレントディレクトリを取得する
相対パスを絶対パスに変換するときに使用する Path クラスで用意されている toAbsolutePath メソッドを使用すると、現在のカレントディレクトリを取得することができます。ここでは Java を使ってカレントディレクトリを取得する方法について解説します。
(Last modified: )
toAbsolutePathメソッドを使ってカレントディレクトリを取得する
それでは Path クラスの toAbsolutePath メソッドを使ってカレントディレクトリを取得する方法です。最初に Paths.get メソッドの引数に空文字を指定して Path オブジェクトを取得します。
Path p = Paths.get("");
空文字を指定した場合には相対パスでの指定と同じなので、カレントディレクトリからの相対パスとして扱われます。引数に指定したパスは空文字なので、結果としてこの Path オブジェクトはカレントディレクトリを表す Path オブジェクトとなります。
次に Paths クラスの toAbsolutePath メソッドを使用すると、 Path オブジェクトが持つ相対パスの情報を絶対パスに変換し、絶対パスの情報を持つ新しい Path オブジェクトにして返してくれます。( toAbsolutePath メソッドの詳しい使い方について「相対パスを絶対パスに変換する(Path.toAbsolutePath)」を参照されてください)。
Path p1 = Paths.get(""); Path p2 = p1.toAbsolutePath(); System.out.println(p2.toString());
これで p2 には絶対パスでのカレントディレクトリを表すパス情報が格納されました。あとは Path オブジェクトの文字列表現を取得すればカレントディレクトリを取得することができます。
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample17-1.java という名前で保存します。
import java.nio.file.Path; import java.nio.file.Paths; class JSample17_1{ public static void main(String[] args){ Path p1 = Paths.get(""); Path p2 = p1.toAbsolutePath(); System.out.println(p2.toString()); } }
コンパイルを行います。
javac -encoding UTF-8 JSample17_1.java
その後で、次のように実行してください。
java JSample17_1
カレントディレクトリを取得することができました。
System.getPropertyメソッドを使ってカレントディレクトリを取得する
Java を使ってカレントディレクトリを取得する方法はいくつかあるのですが、その中のひとつとして System クラスで用意されている getProperty メソッドを使用する方法をご紹介します。
public static String getProperty(String key)
パラメータ: key - システム・プロパティの名前 戻り値: システム・プロパティの文字列値。そのキーを持つプロパティが存在しない場合はnull 例外: SecurityException - セキュリティ・マネージャが存在し、セキュリティ・マネージャのcheckPropertyAccessメソッドが指定されたシステム・プロパティへのアクセスを許可しない場合 NullPointerException - keyがnullである場合 IllegalArgumentException - keyが空である場合
1 番目の引数にシステム・プロパティのキーを指定します。戻り値としてキーに対応する値を取得できます。
指定可能なシステム・プロパティのキーとしては次のようなものがあります。
キー | 値 |
---|---|
java.version | Java Runtime Environmentバージョン |
java.version.date | Java Runtime Environmentバージョン日付(「ISO-8601 YYYY-MM-DD」形式) |
java.vendor | Java Runtime Environmentのベンダー |
java.vendor.url | JavaベンダーのURL |
java.vendor.version | Javaベンダー・バージョンの(optional) |
java.home | Javaのインストール先ディレクトリ |
java.vm.specification.version | Java Virtual Machine仕様のバージョン |
java.vm.specification.vendor | Java仮想マシンの仕様のベンダー |
java.vm.specification.name | Java仮想マシンの仕様名 |
java.vm.version | Runtime.Versionとして解釈されるJava Virtual Machineの実装バージョン |
java.vm.vendor | Java仮想マシンの実装のベンダー |
java.vm.name | Java仮想マシンの実装名 |
java.specification.version | Java Runtime Environment仕様バージョン |
java.specification.vendor | Java Runtime Environmentの仕様のベンダー |
java.specification.name | Java Runtime Environmentの仕様名 |
java.class.version | Javaクラスの形式のバージョン番号 |
java.class.path | Javaクラス・パス |
java.library.path | ライブラリのロード時に検索するパスのリスト |
java.io.tmpdir | デフォルト一時ファイルのパス |
java.compiler | 使用するJITコンパイラの名前 |
os.name | オペレーティング・システム名 |
os.arch | オペレーティング・システムのアーキテクチャ |
os.version | オペレーティング・システムのバージョン |
file.separator | ファイル区切り文字(UNIXでは"/") |
path.separator | パス区切り文字(UNIXでは":") |
line.separator | 行区切り文字(UNIXでは"\n") |
user.name | ユーザーのアカウント名 |
user.home | ユーザーのホーム・ディレクトリ |
user.dir | ユーザーの現在の作業ディレクトリ |
例えばキーとして "java.version" "java.home" "os.name" をそれぞれ指定してみた場合、私の環境では次のように出力されました。
String javaVersiton = System.getProperty("java.version"); System.out.println(javaVersiton); // 15.0.2 String javaHome = System.getProperty("java.home"); System.out.println(javaHome); // C:\pg\java\jdk-15.0.2 String osName = System.getProperty("os.name"); System.out.println(osName); // Windows 10
カレントディレクトリを取得する場合にはキーとして "user.dir" を指定してください。
String userDir = System.getProperty("user.dir"); System.out.println(userDir); // C:\code\java\file
カレントディレクトリを取得することができました。
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample17-2.java という名前で保存します。
class JSample17_2{ public static void main(String[] args){ String userDir = System.getProperty("user.dir"); System.out.println(userDir); } }
コンパイルを行います。
javac -encoding UTF-8 JSample17_2.java
その後で、次のように実行してください。
java JSample17_2
カレントディレクトリを取得することができました。
-- --
Java を使ってカレントディレクトリを取得する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。