Je me tire les cheveux pour cela depuis assez longtemps. J'ai étudié pendant une heure sur la façon de nettoyer une console en Java.
Tout ce que j’ai trouvé c’était du piratage sale, soit en imprimant un tas de lignes, soit en exécutant cette opération.
Runtime.getruntime.exec("cls/clear");
Cependant, rien ne semble fonctionner pour moi. N’y at-il pas vraiment moyen de vider la console en Java comme en C (clrscr();
). N'y a-t-il pas de bibliothèque externe permettant d'atteindre cet objectif?
S'il vous plaît laissez-moi savoir si quelqu'un a déjà fait cela avant d'utiliser une fonction, une bibliothèque, etc., au lieu d'un piratage sale.
Si votre terminal prend en charge codes d'échappement ANSI , ceci efface l'écran et déplace le curseur sur la première ligne, première colonne:
System.out.print("\033[H\033[2J");
System.out.flush();
Cela fonctionne sur presque tous les terminaux et émulateurs de terminaux UNIX. Windows cmd.exe
n'interprète pas les codes d'échappement ANSI.
Essayez ce code
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, la console est effacée.
Runtime.getRuntime().exec("PlatformDepedentCode");
Vous devez remplacer "PlatformDependentCode" par la commande clear console de votre plate-forme.
La méthode exec()
exécute la commande que vous avez entrée en tant qu'argument, comme si elle était entrée dans la console.
Sous Windows, vous l'écriviez sous la forme Runtime.getRuntime().exec("cls");
.
Utilisez le code suivant:
System.out.println("\f");
'\f ' est une séquence escape qui représente FormFeed . C’est ce que j’ai utilisé dans mes projets pour vider la console. C'est plus simple que les autres codes, je suppose.
Vous devez indiquer à la console d'effacer.
Pour les terminaux série, cela se faisait généralement par le biais de "séquences d'échappement", où notamment le vt100 set est devenu très communément pris en charge (et son proche cousin ANSI).
Windows n'a traditionnellement pas pris en charge de telles séquences "prêtes à l'emploi", mais s'appuyait sur des appels d'API pour effectuer ces tâches. Pour les versions de Windows sous DOS, toutefois, le pilote ANSI.SYS peut être installé pour assurer cette prise en charge.
Donc, si vous êtes sous Windows, vous devez interagir avec l'API Windows appropriée. Je ne crois pas que la bibliothèque d'exécution Java standard contienne du code pour le faire.
Vous pouvez facilement implémenter clrscr () en utilisant simple pour l’impression en boucle "\ b".