【问题标题】:Write to same location in a console window with java使用java写入控制台窗口中的相同位置
【发布时间】:2011-05-02 16:21:59
【问题描述】:

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

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

你怎么能把字符写到同一个位置呢?否则,你会得到这样的/-\_/-\_/-\

【问题讨论】:

  • 这是用于 windows 终端还是其他一些终端?
  • Windows 现在,但希望它是跨平台的

标签: java console io


【解决方案1】:

在 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)。

另请注意,您不一定必须使用控制台类,因为将此序列打印到标准输出通常也可以。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-07-01
      • 1970-01-01
      • 2018-01-31
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 2011-05-24
      相关资源
      最近更新 更多