很长一段时间以来,我一直在拉我的头发。我已经研究了如何用Java清理控制台一小时。
我发现的只是通过打印一堆行或执行此
来进行肮脏的黑客行为Runtime.getruntime.exec("cls/clear");
然而,似乎没有什么对我有用。难道没有像C(clrscr();
)那样用Java清除控制台的方法。是不是有任何外部库可以实现这一目标。
如果有人在使用适当的功能,库等而不是肮脏的黑客攻击之前,请告诉我。
答案 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然后通过在命令提示符中调用它或双击文件来运行