Ich ziehe dafür schon seit geraumer Zeit meine Haare. Ich habe eine Stunde lang nachgeforscht, wie eine Konsole in Java gelöscht werden kann.
Alles, was ich fand, war schmutziges Hacken, entweder indem ich ein paar Zeilen druckte oder dies ausführte
Runtime.getruntime.exec("cls/clear");
Nichts scheint jedoch für mich zu funktionieren. Gibt es nicht wirklich eine Möglichkeit, die Konsole in Java wie in C (clrscr();
) zu löschen. Gibt es keine externe Bibliothek, mit der dies erreicht werden kann?
Bitte lassen Sie mich wissen, ob jemand dies jemals getan hat, bevor Sie eine ordnungsgemäße Funktion, Bibliothek usw. anstelle von schmutzigem Hacken verwenden.
Wenn Ihr Terminal ANSI-Escape-Codes unterstützt, wird der Bildschirm gelöscht und der Cursor in die erste Zeile der ersten Spalte verschoben:
System.out.print("\033[H\033[2J");
System.out.flush();
Dies funktioniert auf fast allen UNIX-Terminals und Terminalemulatoren. ANZEIGE-Escape-Codes werden von Windows cmd.exe
nicht interpretiert.
Versuchen Sie diesen 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();
}
}
Wenn der Java-Prozess jetzt mit einer Konsole verbunden ist, wird die Konsole gelöscht.
Runtime.getRuntime().exec("PlatformDepedentCode");
Sie müssen "PlatformDependentCode" durch den Befehl clear console Ihrer Plattform ersetzen.
Die exec()
-Methode führt den Befehl aus, den Sie als Argument eingegeben haben, so als ob er in die Konsole eingegeben würde.
In Windows würden Sie es als Runtime.getRuntime().exec("cls");
schreiben.
Verwenden Sie den folgenden Code:
System.out.println("\f");
'\f ' ist eine escape-Sequenz, die FormFeed darstellt. Dies ist, was ich in meinen Projekten verwendet habe, um die Konsole zu löschen. Das ist einfacher als die anderen Codes, denke ich.
Sie müssen die Konsole zum Löschen anweisen.
Bei seriellen Terminals wurde dies normalerweise durch sogenannte "Escape-Sequenzen" durchgeführt, wobei vor allem das Set vt100 sehr häufig unterstützt wird (und dessen nahe ANSI-Cousin).
Windows hat solche Sequenzen traditionell nicht "out-of-the-box" unterstützt, sondern hat sich auf API-Aufrufe verlassen, um diese Schritte auszuführen. Bei DOS-basierten Versionen von Windows kann jedoch der ANSI.SYS-Treiber installiert werden, um diese Unterstützung bereitzustellen.
Wenn Sie sich also unter Windows befinden, müssen Sie mit der entsprechenden Windows-API interagieren. Ich glaube nicht, dass die Standard-Java-Laufzeitbibliothek dafür Code enthält.
Sie können clrscr () leicht implementieren, indem Sie für den Schleifendruck "\ b" verwenden.