Как получить backspace\b для работы в консоли Eclipse?

Я создаю небольшое приложение 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!");
}

Это прекрасно работает в командной строке, но символ backspace не распознается в консоли Eclipse (Galileo build 20090920-1017). Вместо этого он отображает пустой квадрат, обозначающий неизвестный символ. Смотрите скриншот:

alt text

Как заставить Eclipse "отображать" обратное пространство правильно? То есть пусть он удалит предыдущий символ.

На самом деле это не showstopper, поскольку он будет запускаться только в командной консоли, но было бы неплохо заставить его работать в Eclipse:)

Ответ 1

Eclipse Bug # 76936. Я бы не рассчитывал на их исправление, и обходных решений не было.

Возможно, вам повезло найти плагин, который вносит вклад в более совершенную консоль.

Ответ 2

Ну, правда, вы не можете использовать backspace\b, чтобы удалить отображаемый прогресс, но вы можете удалить его, очистив консоль с помощью вызова вызова println. Конечно, это kluge не очистит ваш файл журнала!

Ответ 3

Исправлено, Eclipse Mars.

Заметьте, я бы не использовал его для постоянного обновления, поскольку консоль eclipse отстает.

Ответ 4

используйте: System.out.print( "\ b" ) внутри цикла while вместо System.out.print('\ b');