2012-02-10 9 views
6

stderr(getErrorStream)とProcessのstdout(getInputStream)を1つのStreamにまとめて、別の場所で消費したいと考えています。私のためにJavaのライブラリにはこれがありますか?ストリームを多重分離できますか?

注:外部ライブラリなし。私はApache Commons IOの提供するソリューションの存在には興味がありません。私は、JDKに付属するものがあるかどうかだけを知りたい。

+1

[ProcessBuilder.redirectErrorStream()](http://docs.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html#redirectErrorStream(boolean))を試しましたか? –

+0

@GabrielBelingueres私はそれが私のためのプロセスでは早すぎると思う。私は 'ProcessBuilder'の所有者に決定を移すことはできませんが、私はそれを調べます。 –

+0

それはスタウトとsterrする必要がありますか? –

答えて

0

SequenceInputStreamを使用して、2 InputStreamをマージすることができます。

+0

満足できるものではありません。これは逆多重化ではなく、ただシリアル化しているだけです。 –

1

ProcessBuilder.redirectErrorStream(boolean)あなたは何をしますか?

public ProcessBuilder redirectErrorStream(boolean redirectErrorStream)

を設定し、このプロセスビルダーのredirectErrorStreamプロパティ。

このプロパティがtrueある場合の両方がProcess.getInputStream()メソッドを使用して読み取ることができるように、その後、このオブジェクトのstart()メソッドによって開始されたサブプロセスにより生成されるエラー出力は、標準出力とマージされます。これにより、エラーメッセージを対応する出力に関連付けることが容易になります。初期値はfalseです。

EDIT:@Since Java 5以降は、広く入手可能です。

+0

私にとってはうまくいかない:両方のストリームを生成し、別々のオブジェクトに別々に渡し、最後に別のプロセスにフィードするためにそれらを結合する必要があるポイントまで、ストリームを生成する必要があります。 –

0

いいえ、JDKではそれを行うことはありません(6まで、7ではまだすべてのクラスを見ていません)。

関連する問題