У меня есть консольное приложение 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)?