2012-04-20 23 views
26

He estado jalando mi cabello por esto desde hace bastante tiempo. Investigué durante una hora cómo borrar una consola en Java.¿Cómo borrar la consola en Java?

Todo lo que encontré fue sucia piratería, ya sea mediante la impresión de un montón de líneas o la ejecución de este

Runtime.getruntime.exec("cls/clear"); 

Sin embargo, nada parece estar funcionando para mí. ¿No hay realmente una manera de borrar la consola en Java como en C (clrscr();). ¿No hay una biblioteca externa por la cual esto se puede lograr?

Háganme saber si alguien alguna vez ha hecho esto antes de usar una función adecuada, biblioteca, etc. en lugar de hackeo sucio.

+1

'me gusta C'? Creo que la única forma de hacerlo en C es usar una biblioteca como ncurses. Si eso es lo que buscas, esta pregunta describe cómo obtener resultados similares/idénticos con Java: http://stackoverflow.com/questions/439799/whats-a-good-java-curses-like-library-for-terminal -aplicaciones. – Hassan

+0

Si tiene un terminal VT100, tal vez podría utilizar los códigos de escape (Esc [2J \t Borrar toda la pantalla \t ED2) ver http://ascii-table.com/ansi-escape-sequences-vt-100.php Para otros terminales allí podrían ser otros códigos de escape. La consola eclipse no incluye ningún código de escape. – Andreas

+3

Pregunta similar: ** [Java: borre la consola] (http://stackoverflow.com/questions/2979383/java-clear-the-console) ** –

Respuesta

3
Runtime.getRuntime().exec("PlatformDepedentCode"); 

Debe reemplazar "PlatformDependentCode" con el comando de la consola clara de su plataforma.

El método exec() ejecuta el comando que ingresó como argumento, como si se ingresara en la consola.

En Windows lo escribiría como Runtime.getRuntime().exec("cls");.

+10

'Runtime.getRuntime(). Exec (" cls ") ; 'no funciona (todas las veces) en Windows. – Lion

0

Debe indicar a la consola que borre.

Para terminales en serie, esto normalmente se realizaba a través de las denominadas "secuencias de escape", donde el conjunto vt100 se ha vuelto muy común (y su primo ANSI cercano).

Windows tradicionalmente no ha admitido tales secuencias "listas para usar", pero se basó en llamadas de API para hacer estas cosas. Para las versiones de Windows basadas en DOS, sin embargo, el controlador ANSI.SYS podría instalarse para proporcionar dicho soporte.

Si está en Windows, necesita interactuar con la API de Windows adecuada. No creo que la biblioteca de tiempo de ejecución Java estándar contenga código para hacerlo.

16

Si su terminal soporta ANSI escape codes, así se limpia la pantalla y mueve el cursor a la primera fila, primera columna:

System.out.print("\033[H\033[2J"); 
System.out.flush(); 

Esto funciona en casi todos los terminales UNIX y emuladores de terminal. Windows cmd.exe no interpreta los códigos de escape de ANSI.

+0

no funciona en la consola eclipse en ubuntu – sziraqui

+0

Eso es porque la consola Eclipse no es compatible con los códigos de escape ANSI. – IMustBeSomeone

1

Puede implementar fácilmente clrscr() usando la impresión de bucle simple "\ b".

5

probar este código

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 de Java se conecta a una consola, se borrará la consola.

-1

Si está utilizando Windows y está interesado en borrar la pantalla antes de ejecutar el programa, puede compilar el archivo llamarlo desde un archivo .bat. por ejemplo:


cls

java "lo que cada vez el nombre de la clase compila es"


Guardar como "etc" .bat y luego ejecutar llamándolo en el símbolo del sistema o haga doble clic en el archivo

+1

si se utiliza su enfoque, entonces borra todo antes de iniciar el programa, pero la pregunta es sobre borrar la pantalla en tiempo de ejecución cuando el programa Java se está ejecutando. –

1

Utilice el siguiente código:


System.out.println("\f"); 

'\ f' es una secuencia de de escape que representa formfeed. Esto es lo que he usado en mis proyectos para borrar la consola. Esto es más simple que los otros códigos, supongo.