如何在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然后通过在命令提示符中调用它或双击该文件来运行