webentwicklung-frage-antwort-db.com.de

So löschen Sie die Konsole in Java

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.

28
Pankaj Gadge

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.

19
Joni

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.

6
amir zarini
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.

3
Mert Akcakaya

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.

1
Ishwarr Ices

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.

0
adsfa