在 Java 中清除控制台

Aks*_*shu 5 java eclipse console

我有一个扩展 Thread 类的类。在它的 run 方法中有一个System.out.println声明。在执行此打印语句之前,我想清除控制台。我怎样才能做到这一点?

我试过

Runtime.getRuntime().exec("cls"); // and "clear" too  
Run Code Online (Sandbox Code Playgroud)

System.out.flush(); 
Run Code Online (Sandbox Code Playgroud)

但都没有奏效。

Sim*_*aig 5

你在Mac上运行吗?因为如果cls是 Windows 的话。

视窗:

Runtime.getRuntime().exec("cls");
Run Code Online (Sandbox Code Playgroud)

苹果:

Runtime.getRuntime().exec("clear");
Run Code Online (Sandbox Code Playgroud)

flush只是强制立即写入任何缓冲的输出。它不会清除控制台。

编辑抱歉,这些清除仅在您使用实际控制台时才有效。在 Eclipse 中,无法以编程方式清除控制台。您必须输入空格或单击清除按钮。

所以你真的只能使用这样的东西:

for(int i = 0; i < 1000; i++)
{
    System.out.println("\b");
}
Run Code Online (Sandbox Code Playgroud)


小智 2

您可以尝试使用系统操作系统依赖性来解决这些问题:

final String operatingSystem = System.getProperty("os.name");

if (operatingSystem .contains("Windows")) {
    Runtime.getRuntime().exec("cls");
}
else {
    Runtime.getRuntime().exec("clear");
}
Run Code Online (Sandbox Code Playgroud)

或者其他方式实际上是一个糟糕的方式,但实际上将退格键发送到控制台直到它清除。就像是 :

for(int clear = 0; clear < 1000; clear++) {
    System.out.println("\b") ;
}
Run Code Online (Sandbox Code Playgroud)