Java プログラムからシェル スクリプトを実行したいと考えています。このシェル スクリプトは、リソースとして大きなファイルを必要とするシステム ライブラリを呼び出します。
私の Java プログラムは、ドキュメント内のすべての単語に対してこのスクリプトを呼び出します。Runtime.exec() を使用してこのスクリプトを何度も呼び出すと、リソースのロードに時間がかかるため、非常に時間がかかります。
これを克服するために、シェルスクリプトを次のように書くことを考えました(バックグラウンドで継続的に実行するため):
count=0
while count -lt 10 ; do
read WORD
//execute command on this line
done
Java プログラムでコマンドの出力を取得し、さらに処理する必要があります。このタスクを達成するには、I/O 操作をどのようにコーディングすればよいですか?
プロセスの出力ストリームに単語を書き込んで、プロセスの入力ストリームから出力を読み戻そうとしました。しかし、これは機能せず、壊れたパイプの例外がスローされます。
try {
parseResult = Runtime.getRuntime().exec(parseCommand);
parsingResultsReader = new BufferedReader(new InputStreamReader (parseResult.getInputStream()));
errorReader = new BufferedReader(new InputStreamReader (parseResult.getErrorStream()));
parseResultsWriter = new BufferedWriter(new OutputStreamWriter((parseResult.getOutputStream())));
} catch (IOException e) {
e.printStackTrace();
}
parseResultsWriter.write(word);
parseResultsWriter.flush();
while ((line = parsingResultsReader.readLine()) != null) {
// capture output in list here
}
この問題について親切に助けてください