プロセスを実行していて、そのストリームを従来の手法でリダイレクトしたいとします。
ProcessBuilder pb = new ProcessBuilder("C:/folder/script.bat");
Process p = pb.start();
InputStreamReader out = p.getInputStream();
InputStreamReader err = p.getErrorStream();
OutputStreamWriter in = p.getOutputStream();
ここで私の質問: すべての出力を黒で表示し、すべてのエラーを赤で表示し、正しい順序を維持したいと考えています。
- 私の頭に浮かぶ最初のアプローチは、
pb.redirectErrorStream(true);
それらを正しい順序でマージするを使用することですが、異なる色を適用することはできなくなりました。 - 2 番目のアプローチは、両方のストリームを交互にチェックして新しい出力を確認することです。ここでの問題は、出力とエラーがほぼ同時に表示された場合に、どちらを先に表示するかを判断できないことです。したがって、ここでは正しい色を表示できますが、正しい順序では表示できません。
したがって、どちらも期待どおりに機能しません。出力/エラーを正しい順序で異なる色で表示するにはどうすればよいですか?