web-dev-qa-db-fra.com

Java: effacer la console

Quelqu'un peut-il m'indiquer quel code est utilisé pour un écran clair en Java? Par exemple en C++

system("CLS");

Quel code est utilisé dans Java pour un écran clair?

Merci!

124
sadia

Puisqu'il y a plusieurs réponses montrant un code qui ne fonctionne pas pour Windows, voici une clarification:

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

Cette commande fonctionne pas, pour deux raisons:

  1. Il n'y a pas d'exécutable nommé cls.exe ou cls.com dans une installation Windows standard pouvant être appelée via Runtime.exec, car la commande bien connue cls est intégrée à la ligne de commande de Windows. interprète.

  2. Lors du lancement d'un nouveau processus via Runtime.exec, la sortie standard est redirigée vers un canal que le processus initiateur Java peut lire. Mais lorsque la sortie de la commande cls est redirigée, la console n’est pas effacée.

Pour résoudre ce problème, nous devons appeler l'interpréteur de ligne de commande (cmd) et lui dire d'exécuter une commande (/c cls) qui permet d'appeler des commandes intégrées. De plus, nous devons connecter directement son canal de sortie au canal de sortie de Java process, qui fonctionne à partir de Java 7, en utilisant inheritIO():

import Java.io.IOException;

public class CLS {
    public static void main(String... arg) throws IOException, InterruptedException {
        new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
    }
}

Désormais, lorsque le processus Java est connecté à une console, c’est-à-dire qu’il a été démarré à partir d’une ligne de commande sans redirection de sortie, la console sera effacée.

97
Holger

Vous pouvez utiliser le code suivant pour effacer la console de ligne de commande:

public static void clearScreen() {  
    System.out.print("\033[H\033[2J");  
    System.out.flush();  
}  

Pour d'autres références, visitez: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html

69
satish

Voici comment je le ferais. Cette méthode fonctionnera pour les systèmes d'exploitation Windows et Linux/Unix (ce qui signifie que cela 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.
    }
}
15
Dyndrilliac

Si vous souhaitez utiliser une méthode plus indépendante du système, vous pouvez utiliser la bibliothèque JLine et ConsoleReader.clearScreen () . Une vérification prudente de si JLine et ANSI est pris en charge dans l’environnement actuel est probablement utile.

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 + "'.");

        }
    }
}

Lors de l’exécution de cette opération, si vous tapez "clear" à l’invite, l’écran sera effacé. Assurez-vous de l'exécuter à partir d'un terminal/console approprié et non sous Eclipse.

13
prunge

Une façon d’obtenir ceci peut être d’imprimer plusieurs fins de lignes ("\ n") et de simuler l’écran vide. À la fin, effacez, tout au plus dans le shell unix, ne supprime pas le contenu précédent, ne le déplace que 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();
13
blackløtus

Créez une méthode dans votre classe comme ceci: [as @ Holger dit ici .]

public static void clrscr(){
    //Clears Screen in Java
    try {
        if (System.getProperty("os.name").contains("Windows"))
            new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
        else
            Runtime.getRuntime().exec("clear");
    } catch (IOException | InterruptedException ex) {}
}

Cela fonctionne au moins pour Windows, je n'ai pas encore vérifié Linux. Si quelqu'un le vérifie pour Linux, veuillez me laisser savoir si cela fonctionne (ou non).

Une autre méthode consiste à écrire ce code dans clrscr():

for(int i = 0; i < 80*300; i++) // Default Height of cmd is 300 and Default width is 80
    System.out.print("\b"); // Prints a backspace

Je ne vous recommanderai pas d'utiliser cette méthode.

11
Abhishek Kashyap

Essayez ce qui suit:

System.out.print("\033\143");

Cela fonctionnera bien dans un environnement Linux

7
Bhuvanesh Waran

Runtime.getRuntime (). Exec (cls) ne fonctionnait PAS sur mon ordinateur portable XP. Cela a fait -

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

J'espère que cela est utile

5
user3648739

Vous pouvez utiliser une émulation de cls avec for (int i = 0; i < 50; ++i) System.out.println();

2
Epic

Cela fonctionnera si vous le faites dans Bluej ou tout autre logiciel similaire.

System.out.print('\u000C');
2
Abhigyan Singh