stderr(getErrorStream
)とProcess
のstdout(getInputStream
)を1つのStream
にまとめて、別の場所で消費したいと考えています。私のためにJavaのライブラリにはこれがありますか?ストリームを多重分離できますか?
注:外部ライブラリなし。私はApache Commons IOの提供するソリューションの存在には興味がありません。私は、JDKに付属するものがあるかどうかだけを知りたい。
stderr(getErrorStream
)とProcess
のstdout(getInputStream
)を1つのStream
にまとめて、別の場所で消費したいと考えています。私のためにJavaのライブラリにはこれがありますか?ストリームを多重分離できますか?
注:外部ライブラリなし。私はApache Commons IOの提供するソリューションの存在には興味がありません。私は、JDKに付属するものがあるかどうかだけを知りたい。
SequenceInputStreamを使用して、2 InputStreamをマージすることができます。
満足できるものではありません。これは逆多重化ではなく、ただシリアル化しているだけです。 –
ProcessBuilder.redirectErrorStream(boolean)
あなたは何をしますか?
public ProcessBuilder redirectErrorStream(boolean redirectErrorStream)
を設定し、このプロセスビルダーの
redirectErrorStream
プロパティ。このプロパティが
true
ある場合の両方がProcess.getInputStream()
メソッドを使用して読み取ることができるように、その後、このオブジェクトのstart()
メソッドによって開始されたサブプロセスにより生成されるエラー出力は、標準出力とマージされます。これにより、エラーメッセージを対応する出力に関連付けることが容易になります。初期値はfalse
です。
EDIT:@Since Java 5以降は、広く入手可能です。
私にとってはうまくいかない:両方のストリームを生成し、別々のオブジェクトに別々に渡し、最後に別のプロセスにフィードするためにそれらを結合する必要があるポイントまで、ストリームを生成する必要があります。 –
いいえ、JDKではそれを行うことはありません(6まで、7ではまだすべてのクラスを見ていません)。
[ProcessBuilder.redirectErrorStream()](http://docs.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html#redirectErrorStream(boolean))を試しましたか? –
@GabrielBelingueres私はそれが私のためのプロセスでは早すぎると思う。私は 'ProcessBuilder'の所有者に決定を移すことはできませんが、私はそれを調べます。 –
それはスタウトとsterrする必要がありますか? –