[英]BufferedReader pauses on .readLine() when using ProcessBuilder to execute simple Python script
[英]How can I get BufferedReader to display live outputs from a running python script using ProcessBuilder?
我有一个Java脚本,该Java脚本启动一个新线程以使用“进程”构建器执行python脚本。 下面的代码当前从python获取输出,并将其显示在Java运行输出以及JTextArea中。 但是,只有在py脚本运行完毕后,它才大量执行此操作。 从py脚本中写出输出时,是否有办法使输出实时显示? 谢谢!!!!
public void launchPythonScript() {
try {
ProcessBuilder py = new ProcessBuilder("cmd", "/C", "PythonScriptLocation (C:\\....)",""+Directory(variable needed for py script));
Process launch = py.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(launch.getInputStream()));
String readLine;
StringBuilder JavaOutput = new StringBuilder();
while((readLine = reader.readLine()) != null){
JavaOutput.append(readLine).append(System.lineSeparator());
frame2.consoleOutput.setText(JavaOutput.toString());
System.out.println(readLine);
}
} catch (IOException ex) { Logger.getLogger(Frame1.class.getName()).log(Level.SEVERE, null, ex);}
}
脚本运行时,Process InputStream应该为您提供数据。
您正在一次读取一行,因此,如果您的python脚本在一行中发送所有数据,那么您只会在最后看到输出。
尝试将输出数据分成多行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.