操纵或编辑System.out(java)

时间:2013-12-29 09:16:22

标签: java system.out

这可以用Java做,比如使用System.out.println(...),然后以某种方式编辑写的文本?

例如,我有一个基本的应用程序执行某些任务,我想让用户保持更新状态,比如在完成之前显示百分比。

因此,当任务开始时,它会在System.out流中显示类似的东西

Doing x task ... 0%

然后更新正在进行时显示的%。任务完成后,将其更改为“完成!”而不是显示100%或一些随机百分比。

对不起,如果这是一个糟糕且难以理解的问题,我真的不知道怎么说,英语不是我的母语。随意编辑问题以使其更清晰

2 个答案:

答案 0 :(得分:6)

不要使用println;请改用print,并在该行的末尾添加\r。例如,

System.out.print("Doing x task... " + percentDone + "%\r");
System.out.flush();

\r回车)字符将“插入点”返回到当前行的开头,而不会前进到下一行。之后打印文本时,它将覆盖现有行。

使用print时,必须手动flush输出流。否则,在填充内部缓冲区之前,您将不会收到任何输出。

请注意,此技巧在Eclipse,NetBeans和大多数其他IDE的控制台输出中不起作用,因为它们不会解释\r\b等特殊控制字符。您必须从命令行使用它。

答案 1 :(得分:3)

如果要覆盖已编写的文本,可以使用\b\r等控制字符或光标移动。问题是IDE等不同的控制台表现不同,因此没有标准的方法可以做到这一点。


如果要在输出时编辑输出...

您可以通过编写自己的PrintStream并使用

来完成此操作
System.setOut(myPrintStream);

但是,编辑原始代码会更容易,即使您必须先对其进行反编译。