我正在使用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);
}
答案 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 我在字符串生成器中添加了缓冲区,所以我可以做到:) 谢谢你的帮助:)