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 ?

2voto

Amir Forsati Points 1441

Pour la console intellij, le 0x08 Le caractère a fonctionné pour moi !

System.out.print((char) 8);

1voto

sbanders Points 128

J'ai trouvé une solution pour l'effacement de la console dans un IDE Eclipse. Elle utilise la classe Robot. Veuillez voir le code ci-dessous et la légende pour l'explication :

   import java.awt.AWTException;
   import java.awt.Robot;
   import java.awt.event.KeyEvent;

   public void wipeConsole() throws AWTException{
        Robot robbie = new Robot();
        //shows the Console View
        robbie.keyPress(KeyEvent.VK_ALT);
        robbie.keyPress(KeyEvent.VK_SHIFT);
        robbie.keyPress(KeyEvent.VK_Q);
        robbie.keyRelease(KeyEvent.VK_ALT);
        robbie.keyPress(KeyEvent.VK_SHIFT);
        robbie.keyPress(KeyEvent.VK_Q);
        robbie.keyPress(KeyEvent.VK_C);
        robbie.keyRelease(KeyEvent.VK_C);

        //clears the console
        robbie.keyPress(KeyEvent.VK_SHIFT);
        robbie.keyPress(KeyEvent.VK_F10);
        robbie.keyRelease(KeyEvent.VK_SHIFT);
        robbie.keyRelease(KeyEvent.VK_F10);
        robbie.keyPress(KeyEvent.VK_R);
        robbie.keyRelease(KeyEvent.VK_R);
    }

En supposant que vous n'avez pas modifié les paramètres par défaut des touches de raccourci dans Eclipse et que vous importez ces classes java, cela devrait fonctionner.

1voto

La réponse de BalusC n'a pas fonctionné pour moi (console bash sur Ubuntu). Des trucs restaient en fin de ligne. J'ai donc recommencé avec des espaces. Thread.sleep() est utilisé dans l'extrait ci-dessous pour que vous puissiez voir ce qui se passe.

String foo = "the quick brown fox jumped over the fence";
System.out.printf(foo);
try {Thread.sleep(1000);} catch (InterruptedException e) {}
System.out.printf("%s", mul("\b", foo.length()));
try {Thread.sleep(1000);} catch (InterruptedException e) {}
System.out.printf("%s", mul(" ", foo.length()));
try {Thread.sleep(1000);} catch (InterruptedException e) {}
System.out.printf("%s", mul("\b", foo.length()));

mul est une méthode simple définie comme suit :

private static String mul(String s, int n) {
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < n ; i++)
        builder.append(s);
    return builder.toString();
}

( Les cordes de Guava fournit également une fonction similaire repeat méthode)

-1voto

Matthias Points 17181

J'ai utilisé avec succès les méthodes suivantes :

@Before
public void dontPrintExceptions() {
    // get rid of the stack trace prints for expected exceptions
    System.setErr(new PrintStream(new NullStream()));
}

NullStream vit dans le import com.sun.tools.internal.xjc.util de sorte qu'il n'est peut-être pas disponible dans toutes les implémentations Java, mais c'est juste un outil d'aide à la décision. OutputStream Il devrait être assez simple d'écrire le vôtre.

-1voto

Ankit Jha Points 1

Cette solution est applicable si vous voulez supprimer une partie de la sortie de System.out.println(). Elle limite cette sortie à l'impression sur la console et à l'impression d'autres sorties.

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

System.out.println("It will not print");

//To again enable it.
System.setOut(ps);

System.out.println("It will print");

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