1. ホーム
  2. java

[解決済み] Javaでカレントワーキングディレクトリを変更する?

2022-04-28 06:22:20

質問

Javaプログラムの中から、カレントワーキングディレクトリを変更するにはどうしたらよいでしょうか?この問題について調べた限りでは、単にできないと主張していますが、本当にそうだとは思えません。

私は、通常起動するディレクトリからハードコードされた相対ファイルパスを使用してファイルを開くコードの一部を持っています。そして、特定のディレクトリから起動することなく、別のJavaプログラム内からそのコードを使用できるようにしたいのです。を呼び出せばいいだけのような気がします。 System.setProperty( "user.dir", "/path/to/dir" ) しかし、私が知る限り、この行を呼び出すと、ただ黙って失敗し、何もしません。

Javaがこのようなことを許さないのであれば、私は理解できます。 得る また、相対ファイルパスでファイルを開くこともできます。

解決方法は?

純粋なJavaでこれを行うための信頼できる方法はありません。このような場合 user.dir プロパティは System.setProperty() または java -Duser.dir=... の作成に影響するようです。 Files を使用することはできますが、例えば FileOutputStreams .

File(String parent, String child) コンストラクタを使用すると、ディレクトリパスとファイルパスを別々に作成することができ、スワップが容易になります。

別の方法としては、別のディレクトリからJavaを実行するスクリプトをセットアップするか、JNIネイティブコードを使用することです。 以下のように提案します。 .

関連するSunのバグ は、2008年に "will not fix" としてクローズされました。