【问题标题】:How to Clear Console in Java?如何在 Java 中清除控制台?
【发布时间】:2012-05-01 17:50:15
【问题描述】:

很长一段时间以来,我一直为此拉头发。我研究了一个小时如何在 Java 中清除控制台。

我发现的只是通过打印一堆行或执行这个来进行肮脏的黑客攻击

Runtime.getruntime.exec("cls/clear");

但是,似乎没有什么对我有用。真的没有任何方法可以像在 C (clrscr();) 中那样在 Java 中清除控制台。没有任何外部库可以实现这一点。

请让我知道是否有人在使用正确的函数、库等之前做过此操作,而不是肮脏的黑客攻击。

【问题讨论】:

标签: java console


【解决方案1】:
Runtime.getRuntime().exec("PlatformDepedentCode");

您需要将“PlatformDependentCode”替换为您平台的明确控制台命令。

exec() 方法执行您作为参数输入的命令,就像在控制台中输入一样。

在 Windows 中,您可以将其写为 Runtime.getRuntime().exec("cls");

【讨论】:

  • Runtime.getRuntime().exec("cls"); 在 Windows 上(一直)不起作用。
【解决方案2】:

您需要指示控制台清除。

对于串行终端,这通常是通过所谓的“转义序列”完成的,尤其是 vt100 集已得到非常普遍的支持(以及它的近亲 ANSI 表亲)。

Windows 传统上不支持“开箱即用”的此类序列,而是依赖 API 调用来执行这些操作。但是,对于基于 DOS 的 Windows 版本,可以安装 ANSI.SYS 驱动程序来提供此类支持。

因此,如果您在 Windows 下,则需要与相应的 Windows API 进行交互。我不相信标准 Java 运行时库包含这样做的代码。

【讨论】:

    【解决方案3】:

    如果您的终端支持ANSI escape codes,这将清除屏幕并将光标移动到第一行第一列:

    System.out.print("\033[H\033[2J");
    System.out.flush();
    

    这适用于几乎所有的 UNIX 终端和终端仿真器。 Windows cmd.exe 不解释 ANSI 转义码。

    【讨论】:

      【解决方案4】:

      您可以使用简单的 for 循环打印“\b”轻松实现 clrscr()。

      【讨论】:

        【解决方案5】:

        试试这个代码

        import java.io.IOException;
        
        public class CLS {
            public static void main(String... arg) throws IOException, InterruptedException {
                new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
            }
        }
        

        现在当 Java 进程连接到控制台时,它将清除控制台。

        【讨论】:

          【解决方案6】:

          如果您使用的是 windows 并且有兴趣在运行程序之前清除屏幕,您可以编译从 .bat 文件调用它的文件。 例如:


          cls

          java "编译类的名字是什么"


          另存为“etc”.bat,然后在命令提示符下调用或双击文件运行

          【讨论】:

          • 如果使用您的方法,那么它会在启动程序之前清除所有内容,但问题是关于在运行 java 程序运行时清除屏幕。
          【解决方案7】:

          使用以下代码:


          System.out.println("\f");
          

          '\f' 是一个转义序列,代表FormFeed。这是我在项目中用来清除控制台的。我猜这比其他代码简单。

          【讨论】:

            猜你喜欢
            • 2016-09-15
            • 1970-01-01
            • 2010-10-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-15
            • 2021-12-10
            相关资源
            最近更新 更多