¿Cómo borrar la consola usando Java?
¿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?
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
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:
No existe ningún ejecutable con nombre
cls.exe
ocls.com
en una instalación estándar de Windows que pueda invocarse medianteRuntime.exec
, ya que el conocido comandocls
está integrado en el intérprete de línea de comandos de Windows.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 delcls
comando, 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.
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.
Pruebe lo siguiente:
System.out.print("\033\143");
Esto funcionará bien en el entorno Linux.
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();
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.