如何在Java中清除控制台?

时间:2012-04-20 06:21:01

标签: java console clear

很长一段时间以来,我一直在拉我的头发。我已经研究了如何用Java清理控制台一小时。

我发现的只是通过打印一堆行或执行此

来进行肮脏的黑客行为
Runtime.getruntime.exec("cls/clear");

然而,似乎没有什么对我有用。难道没有像C(clrscr();)那样用Java清除控制台的方法。是不是有任何外部库可以实现这一目标。

如果有人在使用适当的功能,库等而不是肮脏的黑客攻击之前,请告诉我。

7 个答案:

答案 0 :(得分:20)

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

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

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

答案 1 :(得分:6)

试试此代码

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进程连接到控制台时,它将清除控制台。

答案 2 :(得分:3)

Runtime.getRuntime().exec("PlatformDepedentCode");

您需要使用平台的clear console命令替换“PlatformDependentCode”。

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

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

答案 3 :(得分:1)

使用以下代码:

public class Review
{
    // Other properties...
    public User User { get; set; }
    public Restaurant Restaurant { get; set; }
}

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

答案 4 :(得分:0)

您需要指示控制台清除。

对于串行终端,这通常是通过所谓的“转义序列”完成的,其中值得注意的是vt100集合已经变得非常普遍(及其接近的ANSI表兄弟)。

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:-1)

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

CLS

java"编译类的名称是"

另存为" etc" .bat然后通过在命令提示符中调用它或双击文件来运行