Da es hier mehrere Antworten gibt, die nicht funktionierenden Code für Windows anzeigen, ist hier eine Klarstellung:
Runtime.getRuntime().exec("cls");
Dieser Befehl ist nicht funktioniert, aus zwei Gründen:
Es gibt keine ausführbare Datei mit dem Namen cls.exeoder cls.comin einer Standard-Windows-Installation, über die aufgerufen werden könnte Runtime.exec, da der bekannte Befehl clsin den Windows-Befehlszeileninterpreter integriert ist.
Beim Starten eines neuen Prozesses über Runtime.execwird die Standardausgabe an eine Pipe umgeleitet, die der initiierende Java-Prozess lesen kann. Wenn die Ausgabe des clsBefehls jedoch umgeleitet wird, wird die Konsole nicht gelöscht.
Um dieses Problem zu lösen, müssen wir den Befehlszeileninterpreter ( cmd) aufrufen und ihn /c clsanweisen , einen Befehl ( ) auszuführen , mit dem eingebaute Befehle aufgerufen werden können. Des Weiteren haben wir seine Ausgangskanal direkt an den Java - Prozess Ausgangskanal zu verbinden, was 7 mit Java arbeitet beginnend mit inheritIO():
Wenn der Java-Prozess nun mit einer Konsole verbunden ist, dh über eine Befehlszeile ohne Umleitung der Ausgabe gestartet wurde, wird die Konsole gelöscht.
Wenn Sie @jdurston weglassen, wird der Cursor nicht zurück zum oberen Rand des Fensters zurückgesetzt.
Hugo Zink
1
Funktioniert nicht in Eclipse, aber im Linux-Terminal. Eine Stimme für Sie
Anh Tuan
7
Dies funktioniert nur, wenn der Terminalemulator, in dem Java ausgeführt wird, ANSI-Escape-Codes unterstützt. Windows NT / XP / 7/8/10 CMD nicht
Thorbjørn Ravn Andersen
19
So würde ich damit umgehen. Diese Methode funktioniert für den Windows-Fall und den Linux / Unix-Fall (was bedeutet, dass sie auch für Mac OS X funktioniert).
publicfinalstaticvoid clearConsole(){try{finalString os =System.getProperty("os.name");if(os.contains("Windows")){Runtime.getRuntime().exec("cls");}else{Runtime.getRuntime().exec("clear");}}catch(finalException e){// Handle any exceptions.}}
Beachten Sie, dass diese Methode die Konsole im Allgemeinen nicht löscht, wenn Sie in einer IDE ausgeführt werden.
Unter Windows 8.1:java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
Ben Leggiero
1
@BenLeggiero Dieser Fehler tritt auf, wenn der Befehl cls aus irgendeinem Grund von der JVM in einem Verzeichnis der Umgebungsvariablen PATH nicht gefunden wird. Dieser Code ruft lediglich den Windows- oder Unix-Systembefehl basierend auf der Standardsystemkonfiguration auf, um die Eingabeaufforderung bzw. das Terminalfenster zu löschen. Es sollte genau so sein, als würde man ein Terminalfenster öffnen und "cls" gefolgt von der Eingabetaste eingeben.
Dyndrilliac
22
clsIn Windows ist keine ausführbare Datei vorhanden. Es ist ein interner Befehl von cmd.exe.
a_horse_with_no_name
7
Wie von anderen gesagt, funktioniert das überhaupt nicht , nicht nur, weil Windows keine ausführbare CLS-Datei hat, sondern auch, weil die Ausgabe von Unterprozessen umgeleitet wird.
Eine Möglichkeit, dies zu erreichen, besteht darin, mehrere Zeilenende ("\ n") zu drucken und den übersichtlichen Bildschirm zu simulieren. Am Ende klar, höchstens in der Unix-Shell, entfernt nicht den vorherigen Inhalt, verschiebt ihn nur nach oben und wenn Sie nach unten scrollen, können Sie den vorherigen Inhalt sehen.
Ein schnellerer Weg, dies zu erreichen, besteht darin, eine einzelne Zeichenfolge von 50 \r\nmit einer einzelnen zu drucken println, da zwischen den printlnAnrufen eine merkliche Verzögerung auftritt.
Ben Leggiero
7
Woher wissen Sie, wie viele Zeilen die Konsole für die Anzeige konfiguriert ist? Könnte in den meisten Fällen funktionieren, aber nicht in allen.
Cypher
4
Der größte Unterschied zwischen diesem und einem richtigen clearbesteht darin, dass bei letzterem die neue Ausgabe oben auf dem Bildschirm und nicht unten angezeigt wird.
ndm13
5
System.out.println(new String(new char[50]).replace("\0", "\r\n"));wird die Arbeit schneller und besser erledigen.
Aaron Esau
1
@AaronEsau ab JDK 11 können Sie verwendenSystem.out.println(System.lineSeparator().repeat(50));
Wenn Sie dies ausführen und an der Eingabeaufforderung "Löschen" eingeben, wird der Bildschirm gelöscht. Stellen Sie sicher, dass Sie es von einem geeigneten Terminal / einer Konsole aus ausführen und nicht in Eclipse.
Erstellen Sie eine Methode in Ihrer Klasse wie folgt : [wie @Holger hier sagte .]
publicstaticvoid clrscr(){//Clears Screen in javatry{if(System.getProperty("os.name").contains("Windows"))newProcessBuilder("cmd","/c","cls").inheritIO().start().waitFor();elseRuntime.getRuntime().exec("clear");}catch(IOException|InterruptedException ex){}}
Dies funktioniert zumindest für Windows, ich habe bisher noch nicht nach Linux gesucht. Wenn jemand es auf Linux überprüft, lassen Sie mich bitte wissen, ob es funktioniert (oder nicht).
Als alternative Methode schreiben Sie diesen Code in clrscr():
for(int i =0; i <80*300; i++)// Default Height of cmd is 300 and Default width is 80System.out.print("\b");// Prints a backspace
Ich werde Ihnen nicht empfehlen, diese Methode zu verwenden.
Es ist nur ein Hinweis, vielleicht möchte jemand den Bildschirm löschen, Eigentlich
Sarz
@Sarz: und tatsächlich macht "Löschen des Bildschirms" für sich genommen auch keinen Sinn
Gyom
0
Sie müssen Steuerzeichen als Backslash (\ b) und Wagenrücklauf (\ r) verwenden. Es ist standardmäßig deaktiviert, aber die Konsolenansicht kann diese Steuerelemente interpretieren.
Windows> Einstellungen und Ausführen / Debuggen> Konsole und wählen Sie ASCII-Steuerzeichen interpretieren, um sie zu aktivieren
Nach diesen Konfigurationen können Sie Ihre Konsole mit folgenden Steuerzeichen verwalten:
\ t - Registerkarte.
\ b - Rücktaste (ein Schritt zurück im Text oder das Löschen eines einzelnen Zeichens).
Antworten:
Da es hier mehrere Antworten gibt, die nicht funktionierenden Code für Windows anzeigen, ist hier eine Klarstellung:
Dieser Befehl ist nicht funktioniert, aus zwei Gründen:
Es gibt keine ausführbare Datei mit dem Namen
cls.exe
odercls.com
in einer Standard-Windows-Installation, über die aufgerufen werden könnteRuntime.exec
, da der bekannte Befehlcls
in den Windows-Befehlszeileninterpreter integriert ist.Beim Starten eines neuen Prozesses über
Runtime.exec
wird die Standardausgabe an eine Pipe umgeleitet, die der initiierende Java-Prozess lesen kann. Wenn die Ausgabe descls
Befehls jedoch umgeleitet wird, wird die Konsole nicht gelöscht.Um dieses Problem zu lösen, müssen wir den Befehlszeileninterpreter (
cmd
) aufrufen und ihn/c cls
anweisen , einen Befehl ( ) auszuführen , mit dem eingebaute Befehle aufgerufen werden können. Des Weiteren haben wir seine Ausgangskanal direkt an den Java - Prozess Ausgangskanal zu verbinden, was 7 mit Java arbeitet beginnend mitinheritIO()
:Wenn der Java-Prozess nun mit einer Konsole verbunden ist, dh über eine Befehlszeile ohne Umleitung der Ausgabe gestartet wurde, wird die Konsole gelöscht.
quelle
Sie können den folgenden Code verwenden, um die Befehlszeilenkonsole zu löschen:
Weitere Referenzen finden Sie unter: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
quelle
So würde ich damit umgehen. Diese Methode funktioniert für den Windows-Fall und den Linux / Unix-Fall (was bedeutet, dass sie auch für Mac OS X funktioniert).
Beachten Sie, dass diese Methode die Konsole im Allgemeinen nicht löscht, wenn Sie in einer IDE ausgeführt werden.
quelle
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
In Windows ist keine ausführbare Datei vorhanden. Es ist ein interner Befehl voncmd.exe
.Eine Möglichkeit, dies zu erreichen, besteht darin, mehrere Zeilenende ("\ n") zu drucken und den übersichtlichen Bildschirm zu simulieren. Am Ende klar, höchstens in der Unix-Shell, entfernt nicht den vorherigen Inhalt, verschiebt ihn nur nach oben und wenn Sie nach unten scrollen, können Sie den vorherigen Inhalt sehen.
Hier ist ein Beispielcode:
quelle
\r\n
mit einer einzelnen zu druckenprintln
, da zwischen denprintln
Anrufen eine merkliche Verzögerung auftritt.clear
besteht darin, dass bei letzterem die neue Ausgabe oben auf dem Bildschirm und nicht unten angezeigt wird.System.out.println(new String(new char[50]).replace("\0", "\r\n"));
wird die Arbeit schneller und besser erledigen.System.out.println(System.lineSeparator().repeat(50));
Wenn Sie dies systemunabhängiger wünschen , können Sie die JLine- Bibliothek und ConsoleReader.clearScreen () verwenden . Es lohnt sich wahrscheinlich auch, sorgfältig zu prüfen, ob JLine und ANSI in der aktuellen Umgebung unterstützt werden .
So etwas wie der folgende Code hat bei mir funktioniert:
Wenn Sie dies ausführen und an der Eingabeaufforderung "Löschen" eingeben, wird der Bildschirm gelöscht. Stellen Sie sicher, dass Sie es von einem geeigneten Terminal / einer Konsole aus ausführen und nicht in Eclipse.
quelle
Erstellen Sie eine Methode in Ihrer Klasse wie folgt : [wie @Holger hier sagte .]
Dies funktioniert zumindest für Windows, ich habe bisher noch nicht nach Linux gesucht. Wenn jemand es auf Linux überprüft, lassen Sie mich bitte wissen, ob es funktioniert (oder nicht).
Als alternative Methode schreiben Sie diesen Code in
clrscr()
:Ich werde Ihnen nicht empfehlen, diese Methode zu verwenden.
quelle
Runtime.getRuntime (). Exec (cls) funktionierte NICHT auf meinem XP-Laptop. Dies tat -
Hoffe das ist nützlich
quelle
Versuche Folgendes :
Dies funktioniert gut in Linux-Umgebung
quelle
Dies funktioniert, wenn Sie dies in Bluej oder einer anderen ähnlichen Software tun.
quelle
Sie können eine Emulation von
cls
with verwendenfor (int i = 0; i < 50; ++i) System.out.println();
quelle
Sie müssen Steuerzeichen als Backslash (\ b) und Wagenrücklauf (\ r) verwenden. Es ist standardmäßig deaktiviert, aber die Konsolenansicht kann diese Steuerelemente interpretieren.
Windows> Einstellungen und Ausführen / Debuggen> Konsole und wählen Sie ASCII-Steuerzeichen interpretieren, um sie zu aktivieren
Nach diesen Konfigurationen können Sie Ihre Konsole mit folgenden Steuerzeichen verwalten:
\ t - Registerkarte.
\ b - Rücktaste (ein Schritt zurück im Text oder das Löschen eines einzelnen Zeichens).
\ n - neue Zeile.
\ r - Wagenrücklauf. ()
\ f - Formularvorschub.
Weitere Informationen unter: https://www.eclipse.org/eclipse/news/4.14/platform.php
quelle
Sie müssen JNI verwenden.
Erstellen Sie zunächst mit Visual Studio eine DLL, die das System ("cls") aufruft. Verwenden Sie danach JNI, um diese DDL zu verwenden.
Ich fand diesen Artikel, der schön ist:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2
quelle