2017-10

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JAVA外部コマンド実行(exe)後の出力情報取得

形態素解析ソフトをJAVAで組み込んで使うプロジェクトだが、Windows環境でJAVAに組み込むのが面倒だったので、とりあえず形態素解析ソフト(KAKASIとか)で解析した結果をとってきてそれを使えばいいやと思った。

でも意外と難しく
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ブログユーザー)

«前のページ  | HOME |  次のページ»

トラックバックは内容に関連性があればOKです。リンクを張らなくてもかまいません
FC2 Blog Rankingへ投票現在UNIXランキング一位
人気blogランキングへ現在TOP10

プロフィール

fdsafdsa

Author:fdsafdsa


ページランク Valid CSS!
人気ブログランキング - BitTorrent と フリーソフト や OS を広めるブログ

ブログ内検索

カテゴリー

フリーエリア

最近の記事

最近のコメント

リンク

このブログをリンクに追加する

月別アーカイブ

ブロとも申請フォーム

この人とブロともになる

Powered By FC2ブログ

ブログやるならFC2ブログ



アクセスランキング

最近のトラックバック

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。