2012-04-20 17 views
26

Seit langem ziehe ich meine Haare dafür. Ich habe eine Stunde lang geforscht, wie man eine Konsole in Java löscht.So löschen Sie die Konsole in Java?

Alles fand ich war schmutzig entweder Hacking durch eine Reihe von Linien Druck oder diese

Runtime.getruntime.exec("cls/clear"); 

jedoch ausgeführt wird, für mich nichts zu funktionieren scheint. Gibt es nicht wirklich eine Möglichkeit, die Konsole in Java zu löschen, wie in C (clrscr();)? Gibt es keine externe Bibliothek, mit der dies erreicht werden kann?

Bitte lassen Sie mich wissen, wenn jemand dies jemals getan hat, bevor Sie eine ordnungsgemäße Funktion, Bibliothek usw. anstelle von schmutzigen Hacking verwenden.

+1

'wie C'? Ich denke, der einzige Weg, dies in C zu tun, ist eine Bibliothek wie Ncurses zu verwenden. Wenn Sie danach suchen, beschreibt diese Frage, wie Sie ähnliche/identische Ergebnisse mit Java erhalten: http://stackoverflow.com/questions/439799/whats-a-good-java-curses-lik-library-for-terminal -Anwendungen. – Hassan

+0

Wenn Sie ein VT100-Terminal haben, könnten Sie vielleicht Escape-Codes verwenden (Esc [2J \t Gesamten Bildschirm löschen \t ED2) siehe http://ascii-table.com/ansi-escape-sequences-vt-100.php Für andere Terminals dort könnte andere Escape-Codes sein. Die Eclipse-Konsole enthält keinen Escape-Code. – Andreas

+3

Ähnliche Frage: ** [Java: Löschen Sie die Konsole] (http://stackoverflow.com/questions/2979383/java-clear-the-console) ** –

Antwort

3
Runtime.getRuntime().exec("PlatformDepedentCode"); 

Sie müssen "PlatformDependentCode" durch den Befehl "clear console" Ihrer Plattform ersetzen.

Die Methode exec() führt den Befehl aus, den Sie als Argument eingegeben haben, so als ob sie in die Konsole eingegeben würde.

In Windows würden Sie es als Runtime.getRuntime().exec("cls"); schreiben.

+10

'Runtime.getRuntime(). Exec (" cls ") ; 'funktioniert nicht (alle Zeiten) unter Windows. – Lion

0

Sie müssen die Konsole zum Löschen anweisen.

Für serielle Terminals wurde dies typischerweise durch so genannte "Escape-Sequenzen" gemacht, wo vor allem der Satz vt100 sehr häufig unterstützt wird (und sein naher ANSI-Cousin).

Windows hat solche Sequenzen standardmäßig nicht "out-of-the-box" unterstützt, sondern sich auf API-Aufrufe verlassen, um diese Dinge zu tun. Bei DOS-basierten Windows-Versionen könnte jedoch der ANSI.SYS-Treiber installiert werden, um diese Unterstützung bereitzustellen.

Wenn Sie also unter Windows arbeiten, müssen Sie mit der entsprechenden Windows-API interagieren. Ich glaube nicht, dass die standardmäßige Java-Laufzeitbibliothek Code dafür enthält.

16

Wenn Ihr Terminal ANSI escape codes unterstützt, löscht diese auf den Bildschirm und bewegt den Cursor in die erste Reihe, erste Spalte:

System.out.print("\033[H\033[2J"); 
System.out.flush(); 

Diese fast alle Terminals UNIX arbeitet an und Terminal-Emulatoren. Das Windows cmd.exe interpretiert ANSI-Escape-Codes nicht.

+0

funktioniert nicht auf Eclipse-Konsole in Ubuntu – sziraqui

+0

Das ist, weil die Eclipse-Konsole ANSI-Escape-Codes nicht unterstützt. – IMustBeSomeone

1

Sie können clrscr() einfach mit dem einfachen For-Loop-Druck "\ b" implementieren.

5

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(); 
    } 
} 

Nun, wenn der Java-Prozess mit einer Konsole verbunden ist, wird es die Konsole zu löschen.

-1

Wenn Sie Windows verwenden und daran interessiert sind, den Bildschirm vor dem Ausführen des Programms zu löschen, können Sie die Datei aus einer BAT-Datei aufrufen. zum Beispiel:


cls

java


Speicher unter "etc" .bat "was auch immer der Name der compiliert Klasse ist", und dann, indem Sie es in dem anruf Befehlszeile oder Doppelklick auf die Datei

+1

Wenn Ihr Ansatz verwendet wird, dann löscht es alles vor dem Start des Programms, aber die Frage besteht darin, den Bildschirm zur Laufzeit zu löschen, wenn das Java-Programm läuft. –

1

Verwenden Sie den folgenden Code:

System.out.println("\f"); 

'\ f' eine Escape-Sequenz, die Seitenvor 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.