Rso's Jotter

日々の開発の知見のメモやその他雑記

Javaでディレクトリ操作するためのメモ

Javaディレクトリを操作するためにjava.io.File等のクラスが用意されていて,カレントディレクトリからのファイル一覧などは取得できるが,カレントディレクトリを移動する操作は含まれていない.


そこでRuntime.exec()を使って外部コマンドに頼る方法を試す
(以下Ubuntuでのメモ.Windowでは多分コマンドが変わる)

	String[] arg = {"cd", "directoryname"}; //directoryname .. 移動したいディレクトリ
	Process p = Runtime.getRuntime().exec(arg);

ってやるといけそうに思えるがこれを実行するとIOExceptionが投げられる.
原因はcdコマンドはシェルのbuilt-inコマンドなのでそんなものは見つからない,と言われるから.


なので,以下のようにbashを起動してカレントディレクトリを移動させる.
ただしその後に続けてコマンドを実行するときしか役に立たない.
ディレクトリを移動して続けて外部コマンドを実行するときぐらいには使えるかもしれない.

	String[] arg = {"bash", "-c", "cd direcotryname; ls"}; //ディレクトリ移動して続けてコマンド実行
	Process p = Runtime.getRuntime().exec(arg);
	BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
	String line = "";
	p.waitFor();
	while((line = br.readLine()) != null){
		System.out.println(line);
	}
	br.close();

そもそもディレクトリを移動したり外部のコマンドを実行したい時は
Javaなんて使わずにRuby等のスクリプト書けばいいだけかもしれない