在没有换行的情况下显示cmd中的进度

时间:2013-03-13 10:01:31

标签: java

我有一个在cmd上运行的java应用程序。我想在运行此过程时显示进度。在这个应用程序中,50个分支处理,我希望在处理完一个分支 2%之后显示,并且在另一个分支处理 4%之后完成,依此类推。 问题是我用的时候

System.out.print("PROGRESS :" + branch_Vec.get(value).toString()+" : "+ df2.format(((a / total) * 100)) +" % \r");

作为输出,每次调用它都会转到新行。

我想在同一行显示进度。例如:

progress : AB : 2%

2 个答案:

答案 0 :(得分:1)

代码System.out.print("\rComplete: "+percentage);应该可以正常工作。

\r是回车符,将清除当前行。只要您不写新行\n,就可以更新文本。

请注意,如果您正在使用它来测试,那么在Eclipse的控制台中无效

答案 1 :(得分:0)

至少以一种简单的方式,无法做到这一点。关键是默认System.out OutputStream允许您调用print(),一个接一个地打印字符,或println(),其作用与{{1}相同},但也在文本的末尾加上一个新行。

一个非优雅的解决方案是清除更新之间的屏幕,以使其看起来像是在相同的位置打印。例如,如果你使用的是Windows,那就是:

print()

不幸的是,这一行与系统有关,因为它调用了Runtime.getRuntime().exec("cls"); 命令。