¿Cómo borrar la consola usando Java?

Resuelto sadia asked hace 14 años • 0 respuestas

¿Alguien puede decirme qué código se utiliza para borrar la pantalla en Java?

Por ejemplo, en C++:

system("CLS");

¿Qué código se utiliza en Java para borrar la pantalla?

sadia avatar Jun 05 '10 13:06 sadia
Aceptado

Puede utilizar el siguiente código para borrar la consola de línea de comando:

public static void clearScreen() {  
    System.out.print("\033[H\033[2J");  
    System.out.flush();  
}  

Advertencias:

  • Esto funcionará en terminales que admitan códigos de escape ANSI.
  • No funcionará en el CMD de Windows
  • No funcionará en la terminal del IDE.

Para más lecturas visita este

satish avatar Aug 30 '2015 11:08 satish

Dado que aquí hay varias respuestas que muestran código que no funciona para Windows, aquí hay una aclaración:

Runtime.getRuntime().exec("cls");

Este comando no funciona por dos motivos:

  1. No existe ningún ejecutable con nombre cls.exeo cls.comen una instalación estándar de Windows que pueda invocarse mediante Runtime.exec, ya que el conocido comando clsestá integrado en el intérprete de línea de comandos de Windows.

  2. Al iniciar un nuevo proceso a través de Runtime.exec, la salida estándar se redirige a una tubería que el proceso Java iniciador puede leer. Pero cuando se redirige la salida del clscomando, no se borra la consola.

Para resolver este problema, tenemos que invocar el intérprete de línea de comando ( cmd) y decirle que ejecute un comando ( /c cls) que permita invocar comandos integrados. Además, tenemos que conectar directamente su canal de salida al canal de salida del proceso Java, que funciona a partir de Java 7, usando inheritIO():

import java.io.IOException;

public class CLS {
    public static void main(String... arg) throws IOException, InterruptedException {
        new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
    }
}

Ahora, cuando el proceso Java esté conectado a una consola, es decir, se haya iniciado desde una línea de comando sin redirección de salida, se borrará la consola.

Holger avatar Oct 27 '2015 22:10 Holger

Así es como lo manejaría. Este método funcionará para el caso del sistema operativo Windows y el caso del sistema operativo Linux/Unix (lo que significa que también funciona para Mac OS X).

public final static void clearConsole()
{
    try
    {
        final String os = System.getProperty("os.name");
        
        if (os.contains("Windows"))
        {
            Runtime.getRuntime().exec("cls");
        }
        else
        {
            Runtime.getRuntime().exec("clear");
        }
    }
    catch (final Exception e)
    {
        //  Handle any exceptions.
    }
}

⚠️ Tenga en cuenta que este método generalmente no borrará la consola si está ejecutando dentro de un IDE.

Dyndrilliac avatar Jun 09 '2013 23:06 Dyndrilliac

Pruebe lo siguiente:

System.out.print("\033\143");

Esto funcionará bien en el entorno Linux.

Bhuvanesh Waran avatar Oct 14 '2016 10:10 Bhuvanesh Waran

Una forma de conseguir esto puede ser imprimir varios finales de líneas ("\n") y simular la pantalla clara. Al final claro, como mucho en el shell de Unix, no elimina el contenido anterior, solo lo mueve hacia arriba y si haces scroll hacia abajo puedes ver el contenido anterior.

Aquí hay un código de muestra:

for (int i = 0; i < 50; ++i) System.out.println();
blackløtus avatar Nov 24 '2012 15:11 blackløtus

Crea un método en tu clase como este: [como dijo @Holger aquí ].

public static void clrscr(){
    //Clears Screen in java
    try {
        if (System.getProperty("os.name").contains("Windows"))
            new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
        else
            Runtime.getRuntime().exec("clear");
    } catch (IOException | InterruptedException ex) {}
}

Esto funciona al menos para Windows, hasta ahora no lo he comprobado para Linux. Si alguien lo comprueba para Linux, avíseme si funciona (o no).

Como método alternativo es escribir este código en clrscr():

for(int i = 0; i < 80*300; i++) // Default Height of cmd is 300 and Default width is 80
    System.out.print("\b"); // Prints a backspace

No te recomendaré que utilices este método.

Abhishek Kashyap avatar Jul 14 '2016 05:07 Abhishek Kashyap