Respuestas:
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 razones:
No hay un ejecutable con nombre cls.exe
o cls.com
en una instalación estándar de Windows que se pueda invocar Runtime.exec
, ya que el conocido comando cls
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 iniciador de Java puede leer. Pero cuando la salida del cls
comando se redirige, no borra la consola.
Para resolver este problema, tenemos que invocar al intérprete de línea de comandos ( cmd
) y decirle que ejecute un comando ( /c cls
) que permite invocar comandos incorporados. Además, debemos conectar directamente su canal de salida al canal de salida del proceso Java, que funciona a partir de Java 7, utilizando 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 ha iniciado desde una línea de comandos sin redirección de salida, borrará la consola.
Puede usar el siguiente código para borrar la consola de línea de comandos:
public static void clearScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
Para más referencias visite: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
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.
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
ejecutable en Windows. Es un comando interno de cmd.exe
.
Una forma de obtener esto puede ser imprimir varios extremos de líneas ("\ n") y simular la pantalla clara. Al final claro, a lo sumo en el shell de Unix, no elimina el contenido anterior, solo lo mueve hacia arriba y si lo hace desplazarse hacia abajo puede ver el contenido anterior.
Aquí hay un código de muestra:
for (int i = 0; i < 50; ++i) System.out.println();
\r\n
con una sola println
, ya que hay un retraso notable entre las println
llamadas.
clear
es que en este último, la nueva salida estará en la parte superior de la pantalla y no en la parte inferior.
System.out.println(new String(new char[50]).replace("\0", "\r\n"));
hará el trabajo más rápido y mejor.
System.out.println(System.lineSeparator().repeat(50));
Si desea un sistema más independiente manera de hacer esto, puede utilizar la JLine biblioteca y ConsoleReader.clearScreen () . Probablemente valga la pena hacer una comprobación prudente de si JLine y ANSI son compatibles con el entorno actual.
Algo como el siguiente código funcionó para mí:
import jline.console.ConsoleReader;
public class JLineTest
{
public static void main(String... args)
throws Exception
{
ConsoleReader r = new ConsoleReader();
while (true)
{
r.println("Good morning");
r.flush();
String input = r.readLine("prompt>");
if ("clear".equals(input))
r.clearScreen();
else if ("exit".equals(input))
return;
else
System.out.println("You typed '" + input + "'.");
}
}
}
Al ejecutar esto, si escribe 'borrar' en el indicador, se borrará la pantalla. Asegúrese de ejecutarlo desde una terminal / consola adecuada y no en Eclipse.
Cree un método en su clase como este: [como @Holger dijo 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 para Windows al menos, no he verificado Linux hasta ahora. 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 uses este método.
Runtime.getRuntime (). Exec (cls) NO funcionó en mi computadora portátil XP. Esto hizo ...
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
Espero que esto sea útil
Intenta lo siguiente:
System.out.print("\033\143");
Esto funcionará bien en un entorno Linux
Esto funcionará si está haciendo esto en Bluej o en cualquier otro software similar.
System.out.print('\u000C');
Debe usar caracteres de control como barra diagonal inversa (\ b) y retorno de carro (\ r). Viene deshabilitado de forma predeterminada, pero la vista Consola puede interpretar estos controles.
Windows> Preferencias y Ejecutar / Depurar> Consola y seleccione Interpretar caracteres de control ASCII para habilitarlo
Después de estas configuraciones, puede administrar su consola con caracteres de control como:
\ t - tab.
\ b - retroceso (un paso hacia atrás en el texto o eliminación de un solo carácter).
\ n - nueva línea.
\ r - retorno de carro. ()
\ f - formulario de alimentación.
Más información en: https://www.eclipse.org/eclipse/news/4.14/platform.php
Necesitas usar JNI.
En primer lugar, crea un .dll usando Visual Studio, ese sistema de llamadas ("cls"). Después de eso, use JNI para usar este DDL.
Encontré este artículo que es bueno:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2