我有一个 Java-Gnome GUI,它启动一个单独的线程来运行我没有代码的命令行程序。我想在 GUI 中显示一个进度条,以显示到目前为止第二个线程已完成的百分比。
鉴于我/我的程序不控制外部程序,这是可能的还是我被一个不确定的脉冲进度条卡住了?谢谢
我有一个 Java-Gnome GUI,它启动一个单独的线程来运行我没有代码的命令行程序。我想在 GUI 中显示一个进度条,以显示到目前为止第二个线程已完成的百分比。
鉴于我/我的程序不控制外部程序,这是可能的还是我被一个不确定的脉冲进度条卡住了?谢谢
当命令行程序在控制台中报告其进度时,您可以在您的 java 应用程序中读取此输出。为此,您必须使用ProcessBuilder创建一个Process对象:
ProcessBuilder processBuilder = new ProcessBuilder("yourCommandLineProgram");
Process process = processBuilder.start();
OutputStream outputStream = process.getOutputStream();
现在您可以读取outputStream
对象以获取命令行程序的文本输出。
当然,这只会在命令行程序向标准输出报告其进度以及此输出可用于确定还剩多少工作时才对您有所帮助。当程序不公开这些信息时,就没有办法知道它的进度(实际上,根据停机问题,如果不完全执行程序,就无法判断程序将运行多长时间)。