ProcessBuilderによって作成された1つのプロセスの出力を別のProcessBuilderで作成された別のプロセスに渡すことはできますか?たとえば、このシェルコマンドを実行しようとしている場合:ProcessBuilderの別のProcessBuilderへのパイプ出力
ls | grep build.xml
ProcessBuilderでどのようにすればよいですか?
Process process = Runtime.getRuntime().exec("ls");
InputStream is = process.getInputStream();
byte[] buf = new byte[1000];
is.read(buf);
String parameter = new String(buf);
System.out.println("grep build " + parameter);
Process proc2 = Runtime.getRuntime().exec("grep build " + parameter);
InputStream is2 = proc2.getInputStream();
byte[] buf2 = new byte[1000];
is2.read(buf2);
String result = new String(buf2);
System.out.println("proc2 result: " + result);
が、それは別の結果は、私はシェルでスクリプトを直接実行したときと比較生成:@erdincが提案されているよう
、私はこれを試してみました。どこが間違っていたのですか?解決
:パラメータ第二の方法として渡すよりも、あなたはのgetInputStreamメソッドを使用することができフィリップ・ウェンドラーソリューション
あなたのソリューションは機能します!ありがとうPhilipp:D私は実際にこのコードを使用して、chasenやmoses(機械翻訳ツール)などのいくつかの外部アプリケーションを呼び出します。 ls | grep exampleは単に質問を簡略化することを目的としていましたが、提案に感謝します:D私は解決された問題をマークし、あなたの解決策をupvoteします。 – ndriks