如何清除控制台?

2022-08-31 07:02:28

任何人都可以告诉我在Java中用于清晰屏幕的代码吗?

例如,在C++:

system("CLS");

Java中使用什么代码来清除屏幕?


答案 1

由于这里有几个答案显示了Windows的非工作代码,因此这里有一个澄清:

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

命令不起作用,原因有两个:

  1. 在标准 Windows 安装中没有可执行文件可以通过 调用,因为众所周知的命令内置于 Windows 的命令行解释器中。cls.execls.comRuntime.execcls

  2. 当通过 启动新进程时,标准输出被重定向到启动 Java 进程可以读取的管道。但是,当命令的输出被重定向时,它不会清除控制台。Runtime.execcls

为了解决这个问题,我们必须调用命令行解释器()并告诉它执行一个允许调用内置命令的命令()。此外,我们必须将其输出通道直接连接到Java进程的输出通道,该输出通道从Java 7开始工作,使用:cmd/c clsinheritIO()

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

您可以使用以下代码清除命令行控制台:

public static void clearScreen() {  
    System.out.print("\033[H\033[2J");  
    System.out.flush();  
}  

警告:

  • 这将适用于支持 ANSI 转义码的终端
  • 不适用于Windows的CMD
  • 它在IDE的终端中不起作用

有关进一步阅读,请访问此


推荐