J'ai un programme Java fonctionnant en mode ligne de commande. Je voudrais afficher une barre de progression, indiquant le pourcentage de travail effectué. Le même type de barre de progression que vous verriez en utilisant wget sous unix. Est-ce possible?
java
command-line
progress-bar
g andrieu
la source
la source
Réponses:
J'ai déjà implémenté ce genre de chose. Ce n'est pas tant une question de java, mais de quels caractères envoyer à la console.
La clé est la différence entre
\n
et\r
.\n
va au début d'une nouvelle ligne. Mais ce\r
n'est qu'un retour chariot - il revient au début de la même ligne.Donc la chose à faire est d'imprimer votre barre de progression, par exemple, en imprimant la chaîne
Au prochain tick de la barre de progression, écrasez la même ligne par une barre plus longue. (parce que nous utilisons \ r, nous restons sur la même ligne) Par exemple:
Ce que vous devez vous rappeler de faire, c'est lorsque vous avez terminé, si vous imprimez simplement
Vous pouvez toujours avoir des déchets de la barre de progression sur la ligne. Donc, une fois que vous avez terminé avec la barre de progression, assurez-vous d'imprimer suffisamment d'espaces pour la supprimer de la ligne. Tel que:
J'espère que cela pourra aider.
la source
Il existe https://github.com/ctongfei/progressbar , Licence: MIT
Barre de progression de la console simple. L'écriture de la barre de progression s'exécute maintenant sur un autre thread.
Menlo, Fira Mono, Source Code Pro ou SF Mono sont recommandés pour des effets visuels optimaux.
Pour les polices Consolas ou Andale Mono, utilisez
ProgressBarStyle.ASCII
(voir ci-dessous) car les glyphes de dessin de boîte ne sont pas correctement alignés dans ces polices.Maven:
Usage:
la source
step()
appels)? Votre bibliothèque fonctionne-t-elle de manière asynchrone, permettant ainsi à l'horloge de se mettre à jour? Et si ma bibliothèque fonctionnait pendant des jours? Utilise-t-il la/r
stratégie? Cela entraînera-t-il une sortie de plusieurs centaines de mégaoctets?J'ai trouvé le code suivant pour fonctionner correctement. Il écrit des octets dans le tampon de sortie. Peut-être que les méthodes utilisant un rédacteur comme la
System.out.println()
méthode remplace les occurrences de\r
to\n
pour correspondre à la fin de ligne native de la cible (si elle n'est pas configurée correctement).la source
J'ai fait un pourcentage de progrès à nu pour vérifier le fichier de téléchargement restant.
J'appelle la méthode périodiquement dans mon téléchargement de fichier pour vérifier la taille totale du fichier et la taille restante et la présenter au format
%
.Il peut également être utilisé à d'autres fins.
Exemple de test et de sortie
Test avec boucle for
La méthode peut être facilement modifiée:
la source
Exemple C # mais je suppose que c'est la même chose pour
System.out.print
Java. N'hésitez pas à me corriger si je me trompe.Fondamentalement, vous souhaitez écrire le
\r
caractère d'échappement au début de votre message, ce qui fera revenir le curseur au début de la ligne (saut de ligne) sans passer à la ligne suivante.la source
Un peu refactorisé et mis à jour la méthode de @ maytham-ɯɐɥʇʎɐɯ. Maintenant, il prend en charge une taille arbitraire de la barre de progression:
la source
Voici une version modifiée de ce qui précède:
... et en général:
la source
Cela serait possible avec une bibliothèque Java Curses. C'est ce que j'ai trouvé. Je ne l'ai pas utilisé moi-même et je ne sais pas si c'est multiplateforme.
la source
J'utilise une barre de progression "rebondissante" lorsque je dois retarder un outil pour éviter une condition de concurrence.
la source
J'ai récemment rencontré le même problème, vous pouvez vérifier mon code: je l'ai défini pour un # sur 5%, que vous pourrez modifier plus tard.
la source
la source
J'ai édité le code d'Eoin Campbell en java et ajouté une progression formatée en pourcentages.
Et sortie:
la source
la source
la source
entrez la description de l'image ici
la source