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

使用java写入控制台窗口中的同一位置,java,console,io,Java,Console,Io,我想在控制台窗口中的相同位置写入一个字符 我想写的字符是/-\\uuu。这将给我一个小微调器,我可以显示进度或加载 但是,如何将字符写入同一位置?否则,您将得到类似这样的东西/-\\\\\/-\\\\\\\\/-\,我认为Java本机不允许这样做。您需要使用一些外部库-也许可以帮助您。对于Java 6,您可以使用来执行以下操作: class Main { public static void main(String[] args) throws InterruptedException

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

我想写的字符是
/
-
\
\uuu
。这将给我一个小微调器,我可以显示进度或加载


但是,如何将字符写入同一位置?否则,您将得到类似这样的东西
/-\\\\\/-\\\\\\\\/-\

,我认为Java本机不允许这样做。您需要使用一些外部库-也许可以帮助您。

对于Java 6,您可以使用来执行以下操作:

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]);
        }
    }
}
主类{
公共静态void main(字符串[]args)引发InterruptedException{
字符串[]微调器=新字符串[]{“\u0008/”,“\u0008-”,“\u0008\\”,“\u0008 |”};
Console=System.Console();
console.printf(“|”);
对于(int i=0;i<1000;i++){
睡眠(150);
printf(“%s”,微调器[i%spinner.length]);
}
}
}
\u0008
是特殊的退格字符。擦除行上最后一个字符的打印。通过开始打印
|
,然后在所有其他字符之前预加
\u0008
,可以获得微调器行为

请注意,这可能无法与所有控制台100%兼容(并且可能返回
null


还请注意,您不必使用console类,因为将此序列打印到标准输出通常也可以。

这是针对windows终端还是其他终端的?windows现在希望它是跨平台的