161 votes

Comment effacer la console ?

Quelqu'un peut-il me dire quel code est utilisé pour effacer l'écran en Java ?

Par exemple, en C++ :

system("CLS");

Quel code est utilisé en Java pour effacer l'écran ?

1 votes

23voto

Bill the Lizard Points 147311

Le code Java équivalent serait :

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

Juste un mot d'avertissement, cela va dépendre du système.

22voto

Dyndrilliac Points 366

Voilà comment je m'y prendrais. Cette méthode fonctionne pour le système d'exploitation Windows et pour le système d'exploitation Linux/Unix (ce qui signifie qu'elle fonctionne également pour Mac OS X).

public final static void clearConsole()
{
    try
    {
        final String os = System.getProperty("os.name");

        if (os.contains("Windows"))
        {
            Runtime.getRuntime().exec("cls");
        }
        else
        {
            Runtime.getRuntime().exec("clear");
        }
    }
    catch (final Exception e)
    {
        //  Handle any exceptions.
    }
}

Notez que cette méthode permet généralement no effacer la console si vous travaillez dans un IDE.

11 votes

Sous Windows 8.1 : java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified

1 votes

@BenLeggiero Cette erreur se produit si, pour une raison quelconque, la commande cls n'est pas trouvée par la JVM dans un répertoire de la variable d'environnement PATH. Tout ce que fait ce code est d'appeler la commande système Windows ou Unix basée sur la configuration système par défaut pour effacer l'invite de commande ou la fenêtre du terminal respectivement. Cela devrait être exactement la même chose que d'ouvrir une fenêtre de terminal et de taper "cls" suivi de la touche Entrée.

0 votes

Je sais tout ça, mais je me suis dit que ça valait la peine de noter que ça peut toujours échouer. Je ne sais pas pourquoi il a échoué, mais il peut manifestement le faire.

16voto

blackløtus Points 491

Un moyen d'obtenir cela peut être d'imprimer plusieurs fins de lignes (" \n ") et simuler l'écran clair. À la fin, clear, au maximum dans le shell unix, ne supprime pas le contenu précédent, mais le déplace vers le haut et si vous faites défiler vers le bas, vous pouvez voir le contenu précédent.

Voici un exemple de code :

for (int i = 0; i < 50; ++i) System.out.println();

15 votes

Une manière plus rapide d'accomplir ceci est d'imprimer une seule chaîne de 50 \r\n avec un seul println puisqu'il y a un retard notable entre println appels.

10 votes

Comment savoir combien de lignes la console est configurée pour afficher ? Cela peut fonctionner dans la plupart des cas, mais pas dans tous.

5 votes

La plus grande différence entre ceci et un vrai clear est que dans ce dernier cas, la nouvelle sortie sera en haut de l'écran et non en bas.

15voto

prunge Points 8131

Si vous souhaitez une méthode plus indépendante du système, vous pouvez utiliser la fonction JLine bibliothèque et ConsoleReader.clearScreen() . Une vérification prudente pour savoir si JLine et ANSI sont supportés dans l'environnement actuel vaut probablement la peine d'être fait aussi.

Quelque chose comme le code suivant a fonctionné pour moi :

import jline.console.ConsoleReader;

public class JLineTest
{
    public static void main(String... args)
    throws Exception
    {
        ConsoleReader r = new ConsoleReader();

        while (true)
        {
            r.println("Good morning");
            r.flush();

            String input = r.readLine("prompt>");

            if ("clear".equals(input))
                r.clearScreen();
            else if ("exit".equals(input))
                return;
            else
                System.out.println("You typed '" + input + "'.");

        }
    }
}

Lorsque vous l'exécutez, si vous tapez 'clear' à l'invite, l'écran s'effacera. Assurez-vous de l'exécuter à partir d'un terminal/console approprié et non dans Eclipse.

8voto

user3648739 Points 7

Runtime.getRuntime().exec(cls) ne fonctionnait PAS sur mon ordinateur portable XP. Ceci a fonctionné -

for(int clear = 0; clear < 1000; clear++)
  {
     System.out.println("\b") ;
  }

J'espère que cela vous sera utile

0 votes

Si vous pouviez définir l'emplacement de l'index du tampon au début, ce serait la seule approche la plus facile.

1 votes

Si le processus devait être interrompu, j'imagine que vous verriez un décalage avec certains print.out supprimés avant d'autres.

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