为了账号安全,请及时绑定邮箱和手机立即绑定

从流程中打印Java InputStream

从流程中打印Java InputStream

开满天机 2019-11-03 04:04:02
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贡献2003条经验 获得超2个赞

在单独的线程中处理进程的输出流可能会有所帮助。您还想明确地等待该过程结束,然后再继续执行逻辑操作:


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-11-04
  • 2 回答
  • 0 关注
  • 251 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信