Réponses:
Puisqu'il y a plusieurs réponses ici montrant du code non fonctionnel pour Windows, voici une clarification:
Runtime.getRuntime().exec("cls");
Cette commande ne fonctionne pas , pour deux raisons:
Il n'y a pas d'exécutable nommé cls.exe
ou cls.com
dans une installation Windows standard qui pourrait être Runtime.exec
appelé via , car la commande bien connue cls
est intégrée à l'interpréteur de ligne de commande de Windows.
Lors du lancement d'un nouveau processus via Runtime.exec
, la sortie standard est redirigée vers un tube que le processus Java initiateur peut lire. Mais lorsque la sortie de la cls
commande est redirigée, elle ne vide pas la console.
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 du processus Java, 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();
}
}
Maintenant, lorsque le processus Java est connecté à une console, c'est-à-dire qu'il a été lancé à partir d'une ligne de commande sans redirection de sortie, il effacera la console.
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 plus de références, visitez: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
Voilà comment je le gérerais. Cette méthode fonctionnera pour le cas du système d'exploitation Windows et le cas du 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 n'effacera généralement pas la console si vous exécutez dans un IDE.
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
exécutable sous Windows. C'est une commande interne de cmd.exe
.
Un moyen d'obtenir cela peut être d'imprimer plusieurs extrémités de lignes ("\ n") et de simuler l'écran clair. À la fin, effacez, 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();
\r\n
avec une seule println
, car il y a un délai notable entre les println
appels.
clear
est que dans ce dernier, la nouvelle sortie sera en haut de l'écran et non en bas.
System.out.println(new String(new char[50]).replace("\0", "\r\n"));
fera le travail plus vite et mieux.
System.out.println(System.lineSeparator().repeat(50));
Si vous voulez une manière indépendante plus de système de le faire, vous pouvez utiliser la JLine bibliothèque et ConsoleReader.clearScreen () . Il vaut probablement la peine de vérifier prudemment si JLine et ANSI sont pris en charge dans l'environnement actuel.
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 exécutez cela, si vous tapez «effacer» à l'invite, cela effacera l'écran. Assurez-vous de l'exécuter à partir d'un terminal / console approprié et non dans Eclipse.
Créez une méthode dans votre classe comme ceci: [comme @Holger l'a 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, merci de me faire savoir s'il 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.
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 c'est utile
Essayez ce qui suit:
System.out.print("\033\143");
Cela fonctionnera bien dans l'environnement Linux
Cela fonctionnera si vous faites cela dans Bluej ou tout autre logiciel similaire.
System.out.print('\u000C');
Vous devez utiliser des caractères de contrôle comme barre oblique inverse (\ b) et retour chariot (\ r). Il est désactivé par défaut, mais la vue Console peut interpréter ces commandes.
Windows> Préférences et Run / Debug> Console et sélectionnez Interprétez caracteres de contrôle ASCII à lui ont permis
Après ces configurations, vous pouvez gérer votre console avec des caractères de contrôle comme:
\ t - tab.
\ b - retour arrière (un retour en arrière dans le texte ou la suppression d'un seul caractère).
\ n - nouvelle ligne.
\ r - retour chariot. ()
\ f - alimentation de formulaire.
Plus d'informations sur: https://www.eclipse.org/eclipse/news/4.14/platform.php
Vous devez utiliser JNI.
Tout d'abord, créez un fichier .dll à l'aide de Visual Studio, qui appelle system ("cls"). Après cela, utilisez JNI pour utiliser ce DDL.
J'ai trouvé cet article sympa:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2