0

可能重复:
使用 java 写入控制台窗口中的相同位置

我想知道在java中是否有一种方法可以替换您输出到终端的一行输出,这样您就可以像进度条/计数器类型的东西一样做。

我想做一些类似于打印出“插入的记录 1/1000”,然后在顶部打印“插入的记录 2/1000”,将其替换为仅显示最近的一个。

4

2 回答 2

2

打印 \r 字符,它将光标放在行首。然后写新行。

public static void main(String[] args) throws InterruptedException {

    System.out.print("test");

    Thread.sleep(3000);

    System.out.print('\r');

    System.out.print("lulz");

}
于 2012-05-21T16:56:52.097 回答
0

只需重新连接 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`.
}
于 2012-05-21T16:58:31.600 回答