一尘不染

Java:清除控制台

java

谁能告诉我Java用什么代码实现清晰屏幕?例如在C ++中

system("CLS");

Java使用什么代码实现清晰的画面?

谢谢!


阅读 1633

收藏
2020-02-27

共1个答案

一尘不染

由于这里有几个答案显示了Windows的无效代码,因此请澄清一下:

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

该命令没有工作,有两个原因:

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

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

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

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进程连接到控制台时,即已从命令行启动而没有输出重定向,它将清除控制台。

2020-02-27