2010-06-22 16 views
67

Estoy creando una pequeña aplicación Java que debería tener un indicador de progreso con porcentajes. En cada bucle utiliza el retroceso \b para eliminar el progreso mostrado antes de mostrar el siguiente porcentaje.¿Cómo hacer retroceder b para trabajar en la consola de Eclipse?

Aquí está un ejemplo simplificado:

public static void main(String[] args) throws Exception { 
    System.out.print("Progress: "); 
    for (int percentage = 0; percentage < 100; percentage++) { 
     System.out.print(percentage + "%"); 
     Thread.sleep(10); // Stub for "long running task". 
     int length = String.valueOf(percentage).length() + 1; 
     while (length-- > 0) { 
      System.out.print('\b'); 
     } 
    } 
    System.out.println("finished!"); 
} 

Esto funciona perfectamente en el símbolo del sistema, pero el carácter de retroceso no se reconoce en la consola de Eclipse (Galileo construir 20090920 a 1017). En su lugar, muestra un cuadrado vacío que denota un carácter desconocido. Ver imágen:

alt text

¿Cómo llego a Eclipse "pantalla" de la tecla de retroceso correctamente? Es decir. deja que elimine el personaje anterior.

Esto es en realidad ninguna sensacional ya que acaba de ser ejecutado en la consola de comandos, pero sería agradable para conseguir que funcione en Eclipse, así :)

+1

Veo los mismos síntomas en NetBeans – PMorganCA

Respuesta

51

Eclipse Bug #76936. yo no contar con ellos para fijar y no hay soluciones alternativas en la lista.

Puede que tenga suerte para encontrar un complemento que proporcione una consola más avanzada.

+0

Oh chico, eso es un error de casi 6 años. Gracias por encontrar el informe. – BalusC

+15

Ver comentario # 24 - "... el equipo de depuración actualmente no tiene el tiempo o los recursos para trabajar en esto. ** Las contribuciones serán muy apreciadas. **" –

+0

'\ r' tampoco funciona – dacwe

7

Bueno, es cierto que no puede usar la tecla de retroceso \ b para eliminar el progreso mostrado, pero puede eliminarlo borrando la consola con un bucle llamando a println. ¡Por supuesto que este kluge no borrará tu archivo de registro!

+0

"limpiando la consola con ...." ¿cómo exactamente? println() no puede borrar la línea ya impresa en la consola! – KNU

+0

Puede empujar la salida ya impresa hacia arriba para que salga del área visible de la consola, despejando la consola. – simon

2

Fijo, Eclipse Mars.

Nota: No lo usaría para realizar actualizaciones constantes, ya que la consola de eclipse está rezagada.

+3

Sin fijar en Neon.3 ('System.out.println (" x \ by ")'). – Matthieu

-1

use: System.out.print ("\ b") dentro del ciclo while, en lugar de System.out.print ('\ b');

Cuestiones relacionadas