1
假設我運行一個過程,我想通過經典的技術改它流:Java進程處理:通過輸出+錯誤流保持正確的順序?
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);
,它以正確的順序將它們合併,但不能再應用不同的顏色。 - 第二種方法是交替檢查兩個流的新輸出。這裏的問題是,當輸出和錯誤幾乎同時出現時,我無法確定哪個應該首先顯示。所以在這裏我可以顯示正確的顏色,但不是按正確的順序。
因此,既不按預期工作。我應該如何以正確的順序顯示不同顏色的輸出/錯誤?
聰明的主意,謝謝!然而,我不清楚如何確保兩個線程都是同步的,因爲我在流中看不到任何功能。我們如何確保以正確的順序聽到近乎同時出現的輸出+錯誤? – user1111929