今天用maven下载项目的时候,突然发现这么多年以来我竟然没有关注一个重要的问题就是控制台那个固定位置不还行的进度条或者进度百分比提示,到底是怎么实现的,就研究了一下。
其实很简单:
1.百分比靠\b\b...来实现\b就是backspace,实例如下(From 栈爆网LOL):
System.out.print("percent completed: 0 %"); for (int i = 0; i < 100; i++) { try { Thread.sleep(500); } catch (Exception e) { System.out.println(e); } System.out.printf("\b\b\b\b\b%3d %%", (i+1) ); }
2. 进度条是\r,\n是真的换行了,\r这是换到本行即从新写当前行,大概这个意思:
System.out.print("|======== |\r"); Thread.sleep(200); System.out.print("|======== |\r"); Thread.sleep(200); System.out.print("|======== |\r"); Thread.sleep(200); System.out.print("|========= |\r"); Thread.sleep(200); System.out.print("|========= |\r"); Thread.sleep(200); System.out.print("|=========== |\r"); Thread.sleep(200); System.out.print("|============ |\r");
补充一下:据毛驴大师说,现代console都可以自由选择位置写,所以很多技巧然并卵了,囧。