如何在 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