Limpar a Consola em Java
- Utilizar ANSI Escape Codes para limpar a consola em Java
-
Utilize
ProcessBuilder
para 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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn