У меня есть программа Java, работающая в режиме командной строки. Я хотел бы отобразить индикатор выполнения, показывающий процент выполненной работы. Тот же индикатор выполнения, что и при использовании wget в unix. Это возможно?
java
command-line
progress-bar
G Andrieu
источник
источник
Ответы:
Я реализовывал подобные вещи раньше. Дело не столько в java, сколько в том, какие символы отправлять в консоль.
Ключевым моментом является разница между
\n
и\r
.\n
переходит в начало новой строки. Но\r
это просто возврат каретки - он возвращается в начало той же строки.Поэтому нужно распечатать индикатор выполнения, например, напечатав строку
На следующем тике индикатора выполнения замените ту же строку более длинной полосой. (поскольку мы используем \ r, мы остаемся на той же строке) Например:
Что вы должны сделать, это когда вы закончите, просто напечатайте
У вас все еще может быть мусор от индикатора выполнения на строке. Поэтому после того, как вы закончите с индикатором выполнения, обязательно напечатайте достаточно пробелов, чтобы удалить его из строки. Такие как:
Надеюсь, это поможет.
источник
Есть https://github.com/ctongfei/progressbar , Лицензия: MIT
Простой индикатор выполнения консоли. Запись индикатора выполнения теперь выполняется в другом потоке.
Menlo, Fira Mono, Source Code Pro или SF Mono рекомендуются для получения оптимальных визуальных эффектов.
Для шрифтов Consolas или Andale Mono используйте
ProgressBarStyle.ASCII
(см. Ниже), потому что глифы рисования прямоугольников в этих шрифтах неправильно выровнены.Maven:
Использование:
источник
step()
вызовами)? Ваша библиотека работает асинхронно, что позволяет обновлять часы? Что, если моя библиотека работает несколько дней? Использует ли он/r
стратегию? Приведет ли это к выходу в несколько сотен мегабайт?Я обнаружил, что следующий код работает правильно. Он записывает байты в выходной буфер. Возможно, эти методы, использующие писатель, например
System.out.println()
метод, заменяют вхождения\r
на,\n
чтобы соответствовать окончанию собственной строки цели (если не настроено должным образом).источник
Я сделал процентный прогресс, чтобы проверить оставшийся файл загрузки.
Я периодически вызываю этот метод при загрузке файла, чтобы проверить общий и оставшийся размер файла и представить его в
%
.Его также можно использовать для других целей.
Пример тестирования и вывода
Тест с помощью цикла for
Метод легко модифицировать:
источник
Пример C #, но я предполагаю, что это то же самое для
System.out.print
Java. Не стесняйтесь поправлять меня, если я ошибаюсь.По сути, вы хотите записать
\r
escape-символ в начало вашего сообщения, что приведет к тому, что курсор вернется в начало строки (Line Feed) без перехода к следующей строке.источник
Немного переработан и обновлен метод @ maytham-ɯɐɥʇʎɐɯ. Теперь он поддерживает произвольный размер индикатора выполнения:
источник
Вот модифицированная версия вышеизложенного:
... и в основном:
источник
Это возможно с помощью библиотеки Java Curses. Вот что я нашел. Сам не использовал и не знаю, кроссплатформенный ли он.
источник
Я использую «подпрыгивающий» индикатор выполнения, когда мне нужно отложить инструмент, чтобы предотвратить состояние гонки.
источник
Я недавно столкнулся с той же проблемой, вы можете проверить мой код: я установил его для одного # на 5%, который вы можете изменить позже.
источник
источник
Я отредактировал код Эоина Кэмпбелла на java и добавил отформатированный прогресс в процентах.
И вывод:
источник
источник
источник
введите описание изображения здесь
источник