Posted on 2016-04-21 17:06
Milo的海域 閱讀(413)
評論(0) 編輯 收藏 所屬分類:
Java
java里如何修改console的歷史輸出信息呢?如果是當前行的修改可以簡單想到"\r"的方案,但是如果要修改上一行呢? google了下原來還是有方法的,需要用到ansi的control sequences
ANSI code用java寫了個簡單的例子,例子就是把曾經的output修改為其他字符串并恢復之后的打印,代碼里加了sleep,主要方便理解各種控制序列的含義
//print some test messages
System.out.println("1");
Thread.sleep(1000);
System.out.println("22");
Thread.sleep(1000);
System.out.println("333");
Thread.sleep(1000);
System.out.println("4444");
Thread.sleep(1000);
/**
* modify "333" to "-"
*/
// Move up two lines
int count = 2;
System.out.print(String.format("\033[%dA", count));
Thread.sleep(1000);
// Erase current line content
System.out.print("\033[2K");
Thread.sleep(1000);
// update with new content
System.out.print("-");
Thread.sleep(1000);
// Move down two lines
System.out.print(String.format("\033[%dB", count));
Thread.sleep(1000);
// Move cursor to left beginning
System.out.print(String.format("\033[D", count));
// continue print others
Thread.sleep(1000);
System.out.println("55555");
Thread.sleep(1000);