亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從流程中打印Java InputStream

從流程中打印Java InputStream

aluckdog 2019-10-12 13:39:36
UPDATE: I found a crucial part to why this probably isn't working! I used System.setOut(out); where out is a special PrintStream to a JTextArea這是代碼,但是我遇到的問題是,只有在我結束流程后,信息才會打印出來。public Constructor() {    main();}private void main() {    btnStart.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {            try {                ProcessBuilder builder = new ProcessBuilder("java", textFieldMemory.getText(), "-jar", myJar);                Process process = builder.start();                InputStream inputStream = process.getInputStream();                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream), 1);                String line;                while ((line = bufferedReader.readLine()) != null) {                    System.out.println(line);                }                inputStream.close();                bufferedReader.close();            } catch (IOException ioe) {                ioe.printStackTrace();            }        }    });} 電流輸出:Line 1Line 2Line 3Line 4Line 5這是正確的輸出,但是當我結束該過程時,它只是作為一個大塊打印。有人知道這個問題是什么嗎?如果可以的話,您能幫我解釋一下為什么會發生這種情況嗎,謝謝。
查看完整描述

2 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

在單獨的線程中處理進程的輸出流可能會有所幫助。您還想明確地等待該過程結束,然后再繼續執行邏輯操作:


ProcessBuilder builder = new ProcessBuilder("java",

        textFieldMemory.getText(), "-jar", myJar);

final Process process = builder.start();

final Thread ioThread = new Thread() {

    @Override

    public void run() {

        try {

            final BufferedReader reader = new BufferedReader(

                    new InputStreamReader(process.getInputStream()));

            String line = null;

            while ((line = reader.readLine()) != null) {

                System.out.println(line);

            }

            reader.close();

        } catch (final Exception e) {

            e.printStackTrace();

        }

    }

};

ioThread.start();


process.waitFor();


查看完整回答
反對 回復 2019-10-12
  • 2 回答
  • 0 關注
  • 2344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號