JAVA外部コマンド実行(exe)後の出力情報取得
でも意外と難しく
Runtime.getRuntime().exec( "xxx.exe" );
を使えばいいのはすぐに分かったが、
Runtime.getRuntime().exec( "./kakasi/bin/kakasi -w < aaa.txt" );
を動かそうとするとダメになる。
どうやら「<」が問題らしい。
で、いろいろ調べて
proc = Runtime.getRuntime().exec( "./kakasi/bin/kakasi -w" );
BufferedWriter bw = new BufferedWriter((new OutputStreamWriter(proc.getOutputStream())));
bw.write("今日はJAVAで分かち書きを試しました。");
と2ステップに分ければできることが分かった。
あとは
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
で結果を読み取ればOK
import java.io.*;
public class ExecTest {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Process proc;
String result;
try {
proc = Runtime.getRuntime().exec( "./kakasi/bin/kakasi -w" );
BufferedWriter bw = new BufferedWriter((new OutputStreamWriter(proc.getOutputStream())));
//文を入れる
System.out.println("今日はJAVAで分かち書きを試しました。");
bw.write("今日はJAVAで分かち書きを試しました。");
bw.close();
//出力を読み取る
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while ((result = br.readLine()) != null)
{
System.out.println(result);
}
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
参考リンク
外部のプログラムを実行するには? - [Javaプログラミング]
外部コマンド実行でのリダイレクトについて
JavaFAQ: 外部コマンド呼出し
コメント
コメントの投稿
トラックバック
http://bittorrentlove.blog58.fc2.com/tb.php/121-332ad64b
この記事にトラックバックする(FC2ブログユーザー)
FC2 Blog Rankingへ投票現在UNIXランキング一位
人気blogランキングへ現在TOP10
