Как переписать предыдущую строку в консоли Gradle - для реализации индикатора выполнения - PullRequest
0 голосов
/ 14 октября 2019

У меня есть консольное приложение Java, которое имеет базовый индикатор выполнения, реализованный с использованием \r. Примерно так:

for (int i = 0; i < 20; i++) {
    System.out.print("\r" + i + ""); // notice this uses print, not println

    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
    }
}

На каждой итерации цикла курсор перемещается в начало текущей строки, по существу перезаписывает то, что уже есть. Это сработало хорошо.

Однако недавно я перенес проект на использование gradle, и это больше не работает. Я выяснил, что причина в том, что консоль Gradle ничего не показывает, когда вы просто делаете print, только когда вы делаете println.

Итак, я попытался использовать println с \033[Fсимвол, который должен переместить курсор в начало предыдущей строки:

for (int i = 0; i < 20; i++) {
    System.out.println("\033[F" + i + "");

    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
    }
}

, но это также не работает, вывод консоли был

0
1
2
...

Есть ли способ реализоватьиндикатор выполнения в консоли Gradle (с кодом Java)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...