Я подозреваю, что ваш курсор перемещается в начало строки. Текст, который у вас уже есть, не исчезает, потому что вы ничего не перезаписали. Вы можете вывести пробелы, чтобы очистить строку, а затем добавить еще один \ r.
Я только что проверил следующее на Windows XP и AIX, и оно работает как положено:
public class Foo {
public static void main(String[] args) throws Exception {
System.out.print("old line");
Thread.sleep(3000);
System.out.print("\rnew");
}
}
Я печатаю «старую строку», задержка составляет 3 секунды, а затем «старая строка» меняется на «новую строку»
Я намеренно сделал первую строку длиннее второй, чтобы продемонстрировать, что если вы хотите стереть всю строку, вам придется перезаписать конец пробелами.
Также обратите внимание, что escape-последовательность "\ b" создаст резервную копию на 1 пробел вместо начала строки. Поэтому, если вы хотите стереть только последние 2 символа, вы можете написать:
System.out.println("foo\b\bun")
и получайте «удовольствие».