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 ?
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 ?
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.
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()));
où 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)
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.
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 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.