如何在Java中清除控制台?

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

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

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

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

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

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

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

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

试试这个代码

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

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

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

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

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

使用以下代码:


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

\ f ‘是表示FormFeed转义序列 。 这是我在项目中用来清除控制台的内容。 我想这比其他代码简单。

您需要指示控制台清除。

对于串行终端,这通常是通过所谓的“转义序列”完成的,其中值得注意的是vt100集已经变得非常普遍受到支持(以及它的接近ANSI-cousin)。

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

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

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

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


CLS

java“编译类的名称是什么”


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