如何在 Java 中清除控制台

Rupam Yadav 2023年1月30日 2020年11月24日
  1. 在 Java 中使用 ANSI 转义码清除控制台
  2. 在 Java 中使用 ProcessBuilder 清除控制台
如何在 Java 中清除控制台

在本教程中,我们将看一下在 Java 中清理控制台屏幕的两种方法。我们将通过实例来学习如何在运行时执行 Java 清屏命令。

在 Java 中使用 ANSI 转义码清除控制台

我们可以使用称为 ANSI 转义码序列的特殊代码来改变光标位置或显示不同的颜色。这些序列可以被解释为由字节和字符组合而成的命令。

在 Java 中要清除控制台,我们将使用转义码\033[H\033[2J。这组奇怪的字符代表了清理控制台的命令。为了更好的理解它,我们可以将它分解。

前四个字符\033 的意思是 ESC 或转义字符。结合 033[H,我们就可以将光标移动到指定位置。最后一个字符,033[2J,可以清除整个屏幕。

我们可以看看下面的例子,就是使用这些转义码。我们还使用了 System.out.flush(),当使用 System.out.print() 时,它专门用来清除剩余的字节,这样控制台屏幕上就不会有任何遗漏。

举个例子。

public class ClearConsoleScreen {
    public static void main(String[] args){
        System.out.print("Everything on the console will cleared");
        System.out.print("\033[H\033[2J");
        System.out.flush();
    }
}

在 Java 中使用 ProcessBuilder 清除控制台

在这个方法中,我们将使用一个 ProcessBuilder,它是一个主要用于启动进程的类。我们可以用清理控制台的命令建立一个进程。

ProcessBuilder() 接收要执行的命令及其参数。这种方法的问题是,不同的操作系统可以有不同的命令来清理控制台屏幕。这就是为什么在我们的例子中,我们检查当前的操作系统。

最后,我们是用 Process 类启动一个新的进程,用 inheritIO 将标准输入输出通道设置为 Java 的 I/O 通道。

public class ClearScreen{
    public  static void main (String [] args){
        System.out.println("Hello World");
        ClearConsole();
    }

    public static void ClearConsole(){
        try{
            String operatingSystem = System.getProperty("os.name") //Check the current operating system
              
            if(operatingSystem.contains("Windows")){
                ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "cls");
                Process startProcess = pb.inheritIO.start();
                startProcess.waitFor();
            } else {
                ProcessBuilder pb = new ProcessBuilder("clear");
                Process startProcess = pb.inheritIO.start();

                startProcess.waitFor();
            } 
        }catch(Exception e){
            System.out.println(e);
        }
    }
}
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相关文章 - Java Console