我想在控制台窗口的同一位置写入字符。
我想要写的字符是 / - \ _,这样可以得到一个小的旋转图标,以显示进度或加载状态。
但是如何将字符写入同一位置呢?否则,你会得到类似于这样的结果 /-\_/-\_/-\。
我想要写的字符是 / - \ _,这样可以得到一个小的旋转图标,以显示进度或加载状态。
但是如何将字符写入同一位置呢?否则,你会得到类似于这样的结果 /-\_/-\_/-\。
使用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
)。
还要注意,您不一定需要使用控制台类,因为将此序列打印到标准输出通常同样有效。