76 votes

Comment supprimer le contenu imprimé sur la console par System.out.println() ?

Dans une application Java, j'utilise des appels à System.out.println() . Maintenant, je veux trouver un moyen de supprimer ces éléments de manière programmatique.

Je n'ai pas trouvé de solution avec Google, alors y a-t-il des conseils ?

72voto

BalusC Points 498232

Vous pourriez imprimer le caractère de retour en arrière \b autant de fois que les caractères qui ont été imprimés auparavant.

System.out.print("hello");
Thread.sleep(1000); // Just to give the user a chance to see "hello".
System.out.print("\b\b\b\b\b");
System.out.print("world");

Note : cela ne fonctionne pas parfaitement dans la console Eclipse dans les anciennes versions avant Mars (4.5). Cela fonctionne cependant parfaitement bien dans la console de commande. Voir aussi Comment obtenir un retour en arrière \b pour travailler dans la console d'Eclipse ?

26voto

smas Points 8299

L'effacement de l'écran en Java n'est pas pris en charge, mais vous pouvez essayer quelques astuces pour y parvenir.

a) Utilisez la commande dépendant du système d'exploitation, comme ceci pour Windows :

Runtime.getRuntime().exec("cls");

b) Mettre un tas de nouvelles lignes (cela donne l'illusion que l'écran est clair)

c) Si vous voulez un jour désactiver System.out, vous pouvez essayer ceci :

System.setOut(new PrintStream(new OutputStream() {
    @Override public void write(int b) throws IOException {}
}));

24voto

Olivier Toupin Points 68

Vous pouvez utiliser le curseur vers le haut pour supprimer une ligne, et effacer du texte, ou simplement remplacer l'ancien texte par du nouveau.

int count = 1; 
System.out.print(String.format("\033[%dA",count)); // Move up
System.out.print("\033[2K"); // Erase line content

ou effacer l'écran

System.out.print(String.format("\033[2J"));

C'est un standard, mais selon wikipedia, la console Windows ne le suit pas.

Jetez un coup d'œil : http://www.termsys.demon.co.uk/vtansi.htm

8voto

J'utilise blueJ pour la programmation en Java. Il existe un moyen d'effacer l'écran de la fenêtre du terminal. Essayez ceci:-

System.out.print ('\f');

cela effacera tout ce qui est imprimé avant cette ligne. Mais cela ne fonctionne pas dans l'invite de commande.

7voto

superrcoop Points 403

Il existe deux façons différentes de vider le terminal dans BlueJ. Vous pouvez faire en sorte que BlueJ efface automatiquement le terminal avant chaque appel de méthode interactive. Pour ce faire, activez l'option "Clear screen at method call" dans le menu "Options" du terminal. Vous pouvez également effacer le terminal de manière programmatique à partir de votre programme. L'impression d'un caractère formfeed (Unicode 000C) efface le terminal BlueJ, par exemple :

System.out.print('\u000C');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X