我有一个运行python exe的java程序。由于脚本使用stdout返回一个进度浮点值,所以我希望在打印这些状态消息时立即读取它们。
以下是我尝试的代码:
public void run()
{
// Create new process builder
ProcessBuilder mProcBldr = new ProcessBuilder(mArgs.toArray(new String[0]));
// Set it to working directory of the extracted resource
mProcBldr.directory(new File(mPyExe.getPath()));
// Start the process
mProcess = mProcBldr.start();
mStdIn = new BufferedReader(new InputStreamReader(mProcess.getInputStream()), 128);
mStdErr = new BufferedReader(new InputStreamReader(mProcess.getErrorStream()), 128);
}
public float getProgress()
{
float progress = 0.0f;
try
{
String s;
while ((s = mStdIn.readLine()) != null)
{
System.out.println(s);
}
}
catch(IOException e)
{
e.printStackTrace();
}
return progress;
}
在循环中调用getprogress(),直到进程退出。
python.run();
while(!python.isFinished())
{
System.out.println(python.getProgress());
}
这是一种工作,但它是非常“缓冲”。它一直打印到30%,然后等待一秒钟,然后打印到60%。。。等一下。。。等。。。
有没有什么方法可以立即阅读打印的行,以便进度顺利更新?
致以最诚挚的问候
暂无答案!
目前还没有任何答案,快来回答吧!