Java でコンソールをクリアする

Rupam Yadav 2023年10月12日
  1. Java で ANSI エスケープコードを使用してコンソールをクリアする
  2. Java で ProcessBuilder を使用してコンソールをクリアする
Java でコンソールをクリアする

このチュートリアルでは、Java でコンソール画面をクリーンにする 2つの方法を見ていきます。実行時に Java のクリア画面コマンドを実行する方法を学ぶために、例を見ていきます。

Java で ANSI エスケープコードを使用してコンソールをクリアする

カーソル位置を変更したり、異なる色を表示したりするために、ANSI エスケープコードシーケンスと呼ばれる特殊なコードを使用することができます。これらのシーケンスは、バイトと文字を組み合わせたコマンドとして解釈することができます。

Java でコンソールをクリアするには、エスケープコード \033[H\033[2J を使用します。この奇妙な文字の組み合わせは、コンソールをクリアするためのコマンドを表しています。より理解しやすくするために、これを分解してみましょう。

最初の 4 文字は、ESC またはエスケープ文字を意味します。033[H を組み合わせることで、カーソルを指定した位置に移動させることができます。最後の文字 033[2] は画面全体をきれいにします。

これらのエスケープコードを使った例を以下に示します。また、System.out.print() を使用する際に残りのバイトを洗い流すために特別に System.out.flush() を使用しているので、コンソール画面に何も残らないようにすることができます。

例:

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);
    }
  }
}
著者: 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