可能重复:
使用 java 写入控制台窗口中的相同位置
我想知道在java中是否有一种方法可以替换您输出到终端的一行输出,这样您就可以像进度条/计数器类型的东西一样做。
我想做一些类似于打印出“插入的记录 1/1000”,然后在顶部打印“插入的记录 2/1000”,将其替换为仅显示最近的一个。
可能重复:
使用 java 写入控制台窗口中的相同位置
我想知道在java中是否有一种方法可以替换您输出到终端的一行输出,这样您就可以像进度条/计数器类型的东西一样做。
我想做一些类似于打印出“插入的记录 1/1000”,然后在顶部打印“插入的记录 2/1000”,将其替换为仅显示最近的一个。
打印 \r 字符,它将光标放在行首。然后写新行。
public static void main(String[] args) throws InterruptedException {
System.out.print("test");
Thread.sleep(3000);
System.out.print('\r');
System.out.print("lulz");
}
只需重新连接 System.out 管道以通过您自己的过滤器。例如System.setOut(new MyStream(System.out));
https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#setOut-java.io.PrintStream-
然后你需要实现MyStream
:
public class MyStream extends PrintStream {
private PrintStream standardOut;
public MyStream(PrintStream standardOut) {
this.standardOut = standardOut;
}
... Then here override the appropriate methods (e.g. `println()`, etc...) to correct the output and send it to `standardOut`.
}