Я подозреваю, что Ваш курсор перемещается в переднюю сторону строки. Текст, который Вы уже имеете, не исчезает, потому что Вы не перезаписали его ни с чем. Вы могли произвести пробелы, чтобы очистить строку и затем добавить другой \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-секундная задержка, и затем "старую строку" изменения в "новой строке"
, я намеренно сделал первую строку дольше, чем второе, чтобы продемонстрировать, что, если бы Вы хотите стереть целую строку, необходимо было бы перезаписать конец с пробелами.
Также примечание, что "\b" escape-последовательность создаст резервную копию 1 пространства, вместо к началу строки. Таким образом, если бы Вы только хотели стереть последние 2 символа, Вы могли бы записать:
System.out.println("foo\b\bun")
и получают "забаву".
Мое предположение (И это - предположение), был бы то, что '\r' действительно работает, но консоль, которую Вы используете, не рассматривает его, как Вы ожидали бы. Какую консоль Вы используете? Если это похоже на что-то консольный вывод в Вашем IDE, Вы попробовали его на реальной командной строке вместо этого?
Если Вы просто хотите записать новую строку в консоль, необходимо использовать println () метод:
System.out.println(mystuff);
Однако это не удалит то, что уже находится на строке. На самом деле, так как System.out является PrintStream, который является типом OutputStream, который в основном трудно сделать, хотя можно найти терминальные особенные методы сделать это.
у Вас могла бы быть лучшая удача с помощью реализации Java библиотеки проклятий, такой как JavaCurses.