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.exeo cls.comen una instalación estándar de Windows que se pueda invocar Runtime.exec, ya que el conocido comando clsestá 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 clscomando 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():
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.
@jdurston omitiendo inicio no restablecerá el cursor a la parte superior de la ventana.
Hugo Zink
1
No funciona en Eclipse, pero funciona en la terminal de Linux. Un voto por ti
Anh Tuan
77
Esto solo funciona si el emulador de terminal en el que se ejecuta Java admite códigos de escape ANSI. Windows NT / XP / 7/8/10 CMD no lo hace
Thorbjørn Ravn Andersen
19
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).
publicfinalstaticvoid clearConsole(){try{finalString os =System.getProperty("os.name");if(os.contains("Windows")){Runtime.getRuntime().exec("cls");}else{Runtime.getRuntime().exec("clear");}}catch(finalException e){// Handle any exceptions.}}
Tenga en cuenta que este método generalmente no borrará la consola si está ejecutando dentro de un IDE.
En Windows 8.1:java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
Ben Leggiero,
1
@BenLeggiero Ese error ocurre si por alguna razón la JVM no encuentra el comando cls en algún directorio de la variable de entorno PATH. Todo lo que hace este código es llamar al comando del sistema de Windows o Unix en función de la configuración predeterminada del sistema para borrar el símbolo del sistema o la ventana de terminal respectivamente. Debería ser exactamente lo mismo que abrir una ventana de terminal y escribir "cls" seguido de la tecla Intro.
Dyndrilliac
22
No hay clsejecutable en Windows. Es un comando interno de cmd.exe.
a_horse_with_no_name
77
Como han dicho otros, no funciona en absoluto , no solo porque Windows no tiene cls ejecutables, sino también porque la salida de los subprocesos se redirige.
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.
Una forma más rápida de lograr esto es imprimir una sola cadena de 50 \r\ncon una sola println, ya que hay un retraso notable entre las printlnllamadas.
Ben Leggiero
77
¿Cómo sabe cuántas líneas está configurada para mostrar la consola? Podría funcionar en la mayoría de los casos, pero no en todos.
Cypher
44
La mayor diferencia entre esto y lo correcto cleares que en este último, la nueva salida estará en la parte superior de la pantalla y no en la parte inferior.
ndm13
55
System.out.println(new String(new char[50]).replace("\0", "\r\n"));hará el trabajo más rápido y mejor.
Aaron Esau
1
@AaronEsau comenzando con JDK 11, puedes usarSystem.out.println(System.lineSeparator().repeat(50));
Holger el
15
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.
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.
Es solo una pista, tal vez alguien quiera borrar la pantalla, en realidad
Sarz
@Sarz: y en realidad "limpiar la pantalla" tampoco tiene el sentido adecuado por sí mismo
Gyom
0
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).
Respuestas:
Dado que aquí hay varias respuestas que muestran código que no funciona para Windows, aquí hay una aclaración:
Este comando no funciona, por dos razones:
No hay un ejecutable con nombre
cls.exe
ocls.com
en una instalación estándar de Windows que se pueda invocarRuntime.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 iniciador de Java puede leer. Pero cuando la salida delcls
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, utilizandoinheritIO()
: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.
fuente
Puede usar el siguiente código para borrar la consola de línea de comandos:
Para más referencias visite: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
fuente
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).
Tenga en cuenta que este método generalmente no borrará la consola si está ejecutando dentro de un IDE.
fuente
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 decmd.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:
fuente
\r\n
con una solaprintln
, ya que hay un retraso notable entre lasprintln
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í:
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.
fuente
Cree un método en su clase como este: [como @Holger dijo aquí .]
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()
:No te recomendaré que uses este método.
fuente
Runtime.getRuntime (). Exec (cls) NO funcionó en mi computadora portátil XP. Esto hizo ...
Espero que esto sea útil
fuente
Intenta lo siguiente:
Esto funcionará bien en un entorno Linux
fuente
Esto funcionará si está haciendo esto en Bluej o en cualquier otro software similar.
fuente
Puede usar una emulación de
cls
confor (int i = 0; i < 50; ++i) System.out.println();
fuente
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
fuente
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
fuente