Я создаю небольшое Java-приложение, которое должно иметь индикатор прогресса с процентами. В каждом цикле он использует backspace, \b
чтобы удалить отображаемый прогресс перед отображением следующего процента.
Вот упрощенный пример:
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!");
}
Это отлично работает в командной строке, но символ возврата не распознается в консоли Eclipse (сборка Galileo 20090920-1017). Вместо этого отображается пустой квадрат, обозначающий неизвестный символ. Смотрите скриншот:
Как мне заставить Eclipse правильно "отображать" backspace? Т.е. пусть удалит предыдущий символ.
На самом деле это не showstopper, поскольку он будет запускаться только в командной консоли, но было бы неплохо заставить его работать и в Eclipse :)
Ответы:
Ошибка затмения № 76936. Я бы не стал рассчитывать на то, что они это исправят, а обходных путей не перечислено.
Возможно, вам повезет найти плагин, который предлагает более продвинутую консоль.
источник
Что ж, правда, вы не можете использовать backspace \ b для удаления отображаемого прогресса, но вы можете удалить его, очистив консоль с помощью цикла, вызывающего println. Конечно, этот клудж не очистит ваш лог-файл!
источник
Исправлено, Eclipse Mars.
Обратите внимание, я бы не стал использовать его для постоянного обновления, так как консоль eclipse тормозит.
источник
System.out.println("x\by")
).Сейчас исправили, но по умолчанию отключено. Вы должны включить его
Interpret ASCII control characters
в настройках консоли.источник
используйте: System.out.print ("\ b") внутри цикла while вместо System.out.print ('\ b');
источник