Limpar a Consola em Java

Rupam Yadav 12 outubro 2023
  1. Utilizar ANSI Escape Codes para limpar a consola em Java
  2. Utilize ProcessBuilder para limpar a consola em Java
Limpar a Consola em Java

Neste tutorial, analisaremos as duas maneiras que podem ser usadas para limpar o ecrã da consola em Java. Estaremos a analisar exemplos para aprender como executar comandos de ecrã limpos em Java em tempo de execução.

Utilizar ANSI Escape Codes para limpar a consola em Java

Podemos usar códigos especiais chamados sequências de códigos de fuga ANSI para mudar as posições do cursor ou exibir diferentes cores. Estas sequências podem ser interpretadas como comandos que são uma combinação de bytes e caracteres.

Para limpar a consola em Java, utilizaremos o código de escape \033[H\033[2J. Este estranho array de caracteres representa o comando para limpar a consola. Para o compreender melhor, podemos quebrá-lo.

Os primeiros quatro caracteres \033 significam ESC ou o carácter de fuga. Combinando 033 com [H, podemos mover o cursor para uma posição especificada. Os últimos caracteres, 033[2J, limpam o ecrã inteiro.

Podemos ver o exemplo abaixo, que está a utilizar estes códigos de fuga. Estamos também a utilizar System.out.flush() que é especialmente utilizado para expulsar os bytes restantes ao utilizar System.out.print() para que nada fique de fora no ecrã da consola.

Exemplo:

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();
  }
}

Utilize ProcessBuilder para limpar a consola em Java

Neste método, utilizaremos um ProcessBuilder que é uma classe utilizada principalmente para iniciar um processo. Podemos construir um processo com os comandos que irão limpar a consola.

O ProcessBuilder() recebe os comandos a executar e os seus argumentos. A questão com esta abordagem é que diferentes sistemas operativos podem ter diferentes comandos para limpar o ecrã da consola. É por isso que, no nosso exemplo, verificamos o sistema operativo actual.

Finalmente, estamos a utilizar a classe Process para iniciar um novo processo com inheritIO para definir os canais padrão de entrada e saída para o canal E/S de Java.

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 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

Artigo relacionado - Java Console