• ベストアンサー

Javaでカレントディレクトリを移動するには?

Javaの中で、カレントなディレクトリを移動させ、相対PATHで既存ディレクトリを認識させたいのですが、期待する結果が得られません。 Javaの中でカレントディレクトリを移動する場合、System.setProperty()メソッドを利用して、"user.dir"を書き換えれば良いと思ったのですが、間違いでしょうか? 間違いである場合、Javaの中ディレクトリを移動させる方法はあるのでしょうか? 以下のプログラムは、下記状況下にて実行したものです。 C:\Java |-app ←プログラムを実行時にいるフォルダ |-sub ←相対PATHで認識させたい既存フォルダ ----------- ソース -------------------------- import java.io.*; class TestTest { public static void main(String args[]) { System.out.println("Current dir : " + System.getProperty("user.dir")); System.out.println("Move Dir !"); System.setProperty("user.dir","C:\\Java"); System.out.println("Current dir : " + System.getProperty("user.dir")); File f = new File("sub"); System.out.println("Dir existance : " + f.exists()); } } --------------------------------------------- ----------------実行結果---------------------- C:\Java\app>java TestTest Current dir : C:\Java\app Move Dir ! Current dir : C:\Java Dir existance : false ←trueにならない! --------------------------------------------

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>System.setProperty()メソッドを利用して、"user.dir"を書き換えれば良いと思ったのですが、間違いでしょうか? Systemプロパティは、いわば環境変数のようなものなので、"user.dir"の書き換え即ちカレントディレクトリの移動とはならないです。 >Javaの中ディレクトリを移動させる方法はあるのでしょうか? JAVA の基本機能(OS依存のAPIを呼び出すなどをしないという場合)では、カレントディレクトリの移動はできなかったと思います。

renann
質問者

お礼

カレントディレクトリの移動はできないのですね。 カレントディレクトリが肝となる動作を必要とする処理をJavaの世界だけで描こうとする時は、 Runtime.exec()などを利用して作業ディレクトリを指定して別のJavaプロセスを発行するしかないかもしれませんね。。。 非常に泥臭いですが・・・ アドバイスどうもありがとうございました。

その他の回答 (1)

noname#19197
noname#19197
回答No.2

プログラムでカレントディレクトリを変更するのは、基本的に不可能です。 OSのコマンド"CD"などを使えばできますが、OS依存になってしまいます。 もしくは、 File#getAbsoluteFileを使えば、 システムプロパティの"user.dir"からの相対パスを取得できます。 File f = new File("sub").getAbsoluteFile();

参考URL:
http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000559.html
renann
質問者

お礼

Javaの理念から考えると、当然なことなのですね。。 アドバイスありがとうございました。

関連するQ&A