En primer lugar, me gustaría disculparme por hacer una copia de seguridad de esta pregunta, pero sentí que podría usar otra respuesta.
Derek Schultz es un poco correcto. El carácter '\ b' mueve el cursor de impresión un carácter hacia atrás, lo que le permite sobrescribir el carácter que se imprimió allí (no elimina toda la línea o incluso el carácter que estaba allí a menos que imprima nueva información en la parte superior). El siguiente es un ejemplo de una barra de progreso que usa Java aunque no sigue su formato, sino que muestra cómo resolver el problema central de sobrescribir caracteres (esto solo se ha probado en Ubuntu 12.04 con Oracle 7 de Java en una máquina de 32 bits, pero debería funcionar en todos los sistemas de Java):
public class BackSpaceCharacterTest
{
// the exception comes from the use of accessing the main thread
public static void main(String[] args) throws InterruptedException
{
/*
Notice the user of print as opposed to println:
the '\b' char cannot go over the new line char.
*/
System.out.print("Start[ ]");
System.out.flush(); // the flush method prints it to the screen
// 11 '\b' chars: 1 for the ']', the rest are for the spaces
System.out.print("\b\b\b\b\b\b\b\b\b\b\b");
System.out.flush();
Thread.sleep(500); // just to make it easy to see the changes
for(int i = 0; i < 10; i++)
{
System.out.print("."); //overwrites a space
System.out.flush();
Thread.sleep(100);
}
System.out.print("] Done\n"); //overwrites the ']' + adds chars
System.out.flush();
}
}
La secuencia de escape de retorno de carro '\ r' no funciona en Eclipse debido a un [error antiguo] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=76936) informado en 2004 y no corregido sin embargo, en la última versión de Eclipse (4.3.2 Kepler) –
¿Esto solo funciona para una línea? –
@Sortofabeginner: en una palabra, sí. – NPE