java.lang.Runtime

java.lang.Runtimeを使えば、Javaプログラムからプラットフォーム依存のコマンドを実行することができる。この外部コマンドの呼び出しには若干気をつけないといけないことがある。詳細はJavaFAQ S103: 外部コマンド呼出しを参照すると良いだろう。

参考プログラムを書いてみたので、興味のある方はどうぞ。

/*
*
* 作成日: 2004/02/13
* ex.
* java org.sssg.four.java.runtime.Starter command.com /c dir
* java org.sssg.four.java.runtime.Starter
*/
package org.sssg.four.java.runtime;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Starter {
class Reader implements Runnable {
private InputStream is;
public void setInputStream(InputStream is) {
this.is = is;
}
public void run() {
if (is == null)
return;
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
try {
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
}
}
}
}
}
private String[] args;
private Reader out;
private Reader err;
public Starter() {
String command = “C:\apache-ant-1.5.3-1\bin\ant.bat”;
String fileOption = “-f”;
String fileName = “build.xml”;
args = new String[] { command, fileOption, fileName };
}
public Starter(String[] args) {
this.args = args;
}
public void start() {
try {
Process process = Runtime.getRuntime().exec(args);
InputStream stdout = process.getInputStream();
InputStream stderr = process.getErrorStream();
out = new Reader();
out.setInputStream(stdout);
err = new Reader();
err.setInputStream(stderr);
} catch (IOException e) {
}
Thread outThread = new Thread(out);
Thread errThread = new Thread(err);
outThread.start();
errThread.start();
}
public static void main(String[] args) {
Starter starter = new Starter();
starter.start();
}
}

同じカテゴリの記事: Java