プロが教える店舗&オフィスのセキュリティ対策術

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にならない!

--------------------------------------------

A 回答 (2件)

>System.setProperty()メソッドを利用して、"user.dir"を書き換えれば良いと思ったのですが、間違いでしょうか?


Systemプロパティは、いわば環境変数のようなものなので、"user.dir"の書き換え即ちカレントディレクトリの移動とはならないです。

>Javaの中ディレクトリを移動させる方法はあるのでしょうか?
JAVA の基本機能(OS依存のAPIを呼び出すなどをしないという場合)では、カレントディレクトリの移動はできなかったと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/11 02:13

プログラムでカレントディレクトリを変更するのは、基本的に不可能です。


OSのコマンド"CD"などを使えばできますが、OS依存になってしまいます。

もしくは、
File#getAbsoluteFileを使えば、
システムプロパティの"user.dir"からの相対パスを取得できます。

File f = new File("sub").getAbsoluteFile();

参考URL:http://www.kab-studio.biz/Programing/JavaA2Z/Wor …
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/11 02:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!