使用java写入控制台窗口中的相同位置

use*_*041 8 java io console

我想在控制台窗口中的同一位置写一个字符.

我想写的字符是/ - \ _.这会让我有点微调,我可以显示进度或加载.

你怎么能把字符写到同一个地方呢?否则,你会结束这样的事情/-\_/-\_/-\

Hen*_*son 21

使用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]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

\u0008是特殊的退格字符.打印删除行上的最后一个字符.通过开始打印a |然后\u0008在所有其他字符之前添加前缀,您将获得微调器行为.

请注意,这可能与所有控制台(并且System.console()可以返回null)100%兼容.

另请注意,您不一定要使用控制台类,因为将此序列打印到标准输出通常也同样有用.