从java中捕获c ++中的输出而不返回

时间:2014-04-06 20:30:37

标签: java c++ swing user-interface

我正在使用java SWING为c ++编程制作GUI。我需要在循环中执行c ++程序而不返回java。在这个循环中,我希望捕获一些输出,而不是单步执行 返回0;在c ++程序中

我可以从c ++文件中捕获输出而无需返回到java GUI吗? 这是我在我的代码中的出处和进程

 try {
                int out = 0;
                String line;
                OutputStream stdin = null;
                InputStream stderr = null;
                InputStream stdout = null;

                // calling the exe file
                Process process = new ProcessBuilder("unpattern.exe").start();
                stdin = process.getOutputStream();
                stderr = process.getErrorStream();
                stdout = process.getInputStream();

                // input process
                // "write" the parms into stdin
                line = "1";
                stdin.write(line.getBytes());
                stdin.flush();

                //line = "tx.getText()" + "\n";
                // stdin.write(line.getBytes());
               // stdin.flush();

                stdin.close();
                 // output process
                // clean up if any output in stdout
                BufferedReader brCleanUp =
                        new BufferedReader(new InputStreamReader(stdout));

                while ((line = brCleanUp.readLine()) != null) {
                    // counter of the defects
                    System.out.println(line);

            } catch (IOException ex) {
                Logger.getLogger(QeyeGui3.class.getName()).log(Level.SEVERE, null, ex);
            }

2 个答案:

答案 0 :(得分:4)

你的while循环缺少右括号:

            // ....
            while ((line = brCleanUp.readLine()) != null) {
                // counter of the defects
                System.out.println(line);
            // **** it should go here
        }

我建议你不断获取在while循环中传递给BufferedReader的文本。如果您在Swing应用程序的SwingWorker中执行此操作,则可以使用发布/处理方法对使用传输的信息更新Swing GUI。

答案 1 :(得分:0)

我可以在此链接中找到适合我的问题的解决方案 Capture the output of DOS (command prompt) and display in a JAVA Frame 我在字符串生成器中添加了缓冲区,所以我可以做到:) 谢谢你的帮助:)