java - 操作或编辑 System.out (java)

标签 java system.out

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

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

因此,当任务启动时,它会在 System.out 流中显示类似的内容

Doing x task ... 0%

然后更新取得进展时显示的百分比。每当任务完成时,将其更改为“完成!”而不是显示 100% 或某个随机百分比。

抱歉,如果这是一个糟糕且难以理解的问题,我真的不知道如何表达,而且英语不是我的母语。请随意编辑问题以使其更加清晰

最佳答案

不要使用println;使用 print 代替,并在行末尾添加 \r 。例如,

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

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

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

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

关于java - 操作或编辑 System.out (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20823690/

相关文章:

java - system.out.println(tresset对象)

java - 全局异常处理(非 REST Controller 代码)

java - 如果您想要 64 位 int,那么来自 murmurhash 或从 MD5 哈希中获取 64 位的冲突会更少吗?

java - System.out.println 行影响逻辑的执行

java - System.out.println 在 Play Framework 控制台中乱序打印

java - 如何使用IO Scanner/System.out复制视频和照片?

java - 在 Java 中重置 FileInputStream 以便我可以在测试程序中运行另一个程序的多个实例

java - 当应用程序最小化时监听下载

java - 将 Arraylist<Object> 中的值转换为 byte[]

java - 如何使用.war打包在wildfly-swarm中添加服务模块?