使用Java写入控制台窗口中的相同位置
问题内容:
我想在控制台窗口中的同一位置写入一个字符。
我想写的字符是/
-
\
_
。我可以显示一些微调器,以显示进度或加载情况。
但是,如何将字符写到同一位置?否则,您将得到类似这样的结果/-\_/-\_/-\
问题答案:
使用Java
6,您可以使用Console
来执行以下操作:
class Main {
public static void main(String[] args) throws InterruptedException {
String[] spinner = new String[] {"\u0008/", "\u0008-", "\u0008\\", "\u0008|" };
Console console = System.console();
console.printf("|");
for (int i = 0; i < 1000; i++) {
Thread.sleep(150);
console.printf("%s", spinner[i % spinner.length]);
}
}
}
\u0008
是特殊的退格字符。打印将删除行上的最后一个字符。通过开始打印|
,然后\u0008
在所有其他字符之前添加,您将获得微调功能。
请注意,这可能并非与所有控制台都100%兼容(并且System.console()
可以返回null
)。
还要注意,您不必一定要使用console类,因为将序列打印到标准输出通常也一样。