http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Runtim...
Runtime (Java 2 $B%W%i%C%H%U%)!<%`(J SE v1.4.0)
(java.lang.String)
ファイルaaaを削除するサンプルプログラム
class test {
public static void main(String []args) {
try {
Runtime.getRuntime().exec(”rm aaa”);
System.exit(0);
} catch(Exception e) {
System.exit(1);
}
}
}
java.lang.Runtime.exec()メソッドで実行できます。
私は過去に次のようなクラスを作りWebアプリ上で動かしていました。
javaが走るシェルで、実行したいコマンドにpathが通っていなければうまく動かないです。まあ、フルパスでコマンドを指定すればpathを通す必要はないですが。
<pre>
package net.aqua.commons.util;
import java.io.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* 外部コマンドを実行するクラス。
* 外部コマンドを実行し、そのコマンドが標準出力に出力する文字列を取得することができる。
*
* @since 2004/05/05
* @author Net Aqua Project all rights reserved.
*/
public class CommandExecuter implements Runnable {
private StringWriter strWriter;
private PrintWriter pwriter;
private BufferedReader buffReader;
/**
* コンストラクタ
*/
public CommandExecuter() {
}
/**
* 外部コマンドを実行する。
* @param command 実行する外部コマンド
* @return String 外部コマンドが標準出力に出力する実行結果
* @throws IOException
*/
public String doExec(String command) throws IOException{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(command);
buffReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
strWriter = new StringWriter();
pwriter = new PrintWriter(strWriter);
//出力結果を読み終わるまで待つ。
Thread th = new Thread(this);
th.start();
try {
th.join();
} catch (InterruptedException e) {
throw new IOException(”Command Exec Failed”);
}
buffReader.close();
pwriter.close();
//文字列の最後の改行を削除する。
String temp = strWriter.toString();
if ((temp.length() > 1) && (temp.substring(temp.length() - 1).getBytes()[0] == 10)) {
temp = temp.substring(0,temp.length() - 1);
}
return temp;
}
/**
* コマンドの実行結果を読み出す。
* @see java.lang.Runnable#run()
*/
public void run() {
String line = null;
try {
while((line = buffReader.readLine()) != null ) {
pwriter.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
</pre>
具体的な回答を教えていただきましてありがとうございます。