Wie lösche ich Zeug, das von System.out.println () auf Konsole gedruckt wurde?
In einer Java-Anwendung verwende ich einige Anrufe zu System.out.println()
. Jetzt möchte ich einen Weg finden, um programmgesteuert löschen das Zeug.
Konnte ich nicht finden keine Lösung mit google, so gibt es schon irgendwelche Hinweise?
InformationsquelleAutor der Frage | 2011-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie drucken das backspace-Zeichen
\b
so oft wie die Zeichen, die gedruckt wurden bevor.Hinweis: dies funktioniert nicht einwandfrei in Eclipse-Konsole in älteren Versionen vor Mars (4.5). Dies funktioniert jedoch einwandfrei in der Kommando-Konsole. Siehe auch Wie man backspace \b arbeiten in der Eclipse-Konsole?
InformationsquelleAutor der Antwort BalusC
Clearing-Bildschirm in Java nicht unterstützt, aber Sie können versuchen, einige hacks um dies zu erreichen.
a) mit OS-abhängig Befehl, wie dies für Windows:
b) Stellen Sie einige neue Zeilen (das macht die ilusion, dass der Bildschirm ist klar)
c) Wenn Sie jemals wollen, um System ausschalten.aus, Sie können versuchen, diese:
InformationsquelleAutor der Antwort smas
Könnten Sie cursor nach oben um eine Zeile zu löschen, und löschen Sie text, oder einfach überschreiben mit den alten text mit dem neuen text.
oder clear screen
Dies ist standard, aber laut wikipedia die Windows-Konsole befolgen Sie ihn nicht.
Einen Blick: http://www.termsys.demon.co.uk/vtansi.htm
InformationsquelleAutor der Antwort LabOctoCat
Ich bin mit blueJ für java-Programmierung. Es ist ein Weg, um den Bildschirm zu löschen, es ist terminal-Fenster. Versuchen Sie dieses:-
diesem wird klar, was gedruckt wird, bevor dieser Linie. Aber das funktioniert nicht in der Eingabeaufforderung.
InformationsquelleAutor der Antwort Yashashwi Sidharth
System.out
ist einPrintStream
ist, und selbst nicht in irgendeiner Weise modifizieren, was bekommt die Ausgabe. Je nachdem, was ist sichern, Objekt, können Sie oder können nicht in der Lage sein, um es zu ändern. Zum Beispiel, wenn Sie umleitenSystem.out
eine log-Datei, können Sie möglicherweise zu ändern, dass die Datei nach der Tat. Wenn es geht, direkt zu einer Konsole, der text wird ausgeblendet, sobald es erreicht die Spitze der Konsole, Puffer, aber es gibt keinen Weg, um Durcheinander mit es programmatisch.Ich bin mir nicht sicher, genau das, was Sie hoffen, zu erreichen, aber möchten Sie vielleicht zu prüfen, erstellen Sie einen proxy
PrintStream
um Nachrichten zu filtern, wie Sie ausgegeben werden, anstatt zu versuchen, Sie zu entfernen, nach der Tat.InformationsquelleAutor der Antwort StriplingWarrior
Deaktivieren Sie das Ausgabe-Bildschirm, können Sie simulieren eine Reale person drücken von STRG + L (löscht die Ausgabe). Sie können dies erreichen, indem mit dem Roboter () - Klasse, hier ist, wie Sie dies tun können:
InformationsquelleAutor der Antwort Jordan King
Nur um BalusC ist anwswer...
Aufrufen
System.out.print("\b \b")
wiederholt mit einer Verzögerung bietet eine exakt gleiche Verhalten, wie wenn wir uns treffen ' in {Windows-7-command-Konsole /Java 1.6}InformationsquelleAutor der Antwort srkavin
Ich habe festgestellt, dass in Eclipse Mars, wenn Sie können sicher davon ausgehen, dass die Zeile, die Sie ersetzen es mit mindestens so lang wie die Zeile, die Sie löschen, einfach drucken '\r' (carriage return) können Sie den cursor bewegen zurück an den Anfang der Zeile zu überschreiben, die Zeichen, die Sie sehen. Ich nehme an, wenn die neue Linie ist kürzer, können Sie einfach machen, die verschiedenen mit Leerzeichen.
Diese Methode ist ziemlich praktisch in eclipse für die live-Update-Fortschritt Prozentsätze, wie in diesem code-snippet Riss ich aus einem meiner Programme. Es ist ein Teil von einem Programm zum herunterladen von Mediendateien von einer Webseite.
InformationsquelleAutor der Antwort HesNotTheStig
Gibt es zwei verschiedene Möglichkeiten zum deaktivieren Sie das terminal in BlueJ. Erhalten Sie BlueJ automatisch das terminal löschen, bevor jeder interaktiven Aufruf der Methode. Um dies zu tun, aktivieren Sie die 'Clear screen bei Aufruf der Methode' die option 'Optionen' - Menü des Terminals. Sie können auch deaktivieren Sie die terminal-programmatisch aus Ihrem Programm. Drucken ein formfeed-Zeichen (Unicode-000C) löscht die BlueJ-terminal, zum Beispiel:
InformationsquelleAutor der Antwort superrcoop
Ich habe eine Lösung gefunden für das wischen der Konsole in einer Eclipse IDE. Es nutzt der Roboter-Klasse. Bitte siehe code unten und Beschriftung zur Erklärung:
Vorausgesetzt, Sie haben sich nicht geändert, der Standard-hot-key-Einstellungen in Eclipse und importieren Sie die java-Klassen, dies sollte funktionieren.
InformationsquelleAutor der Antwort sbanders
Der einfachsten Möglichkeiten, dies zu tun wäre:
InformationsquelleAutor der Antwort Anon
BalusC Antwort hat bei mir nicht funktioniert (bash-Konsole auf Ubuntu). Ein paar Sachen blieben am Ende der Zeile. Also rollte ich mich auf die wieder mit Leerzeichen.
Thread.sleep()
ist in der unten snippet, damit Sie sehen können, was passiert.wo
mul
ist eine einfache Methode, definiert als:(Guave ' s Strings- Klasse bietet auch eine ähnliche
repeat
Methode)InformationsquelleAutor der Antwort Marcus Junius Brutus
Habe ich erfolgreich die folgenden:
NullStream
Leben in derimport com.sun.tools.internal.xjc.util
Paket, so dass möglicherweise nicht verfügbar auf allen Java-Implementierungen, aber es ist nur einOutputStream
sollte einfach genug sein, um Ihre eigenen schreiben.InformationsquelleAutor der Antwort Matthias
super klebrig und nicht löschen es, aber es legt einfach neue Linien, bis Sie Weg. Dies ist nur für visuelle, nicht etwas allzu hilfreich. Ich nur empfehlen, da ich diese für manche ASCII-Kunst, und es war die beste Lösung.
Kommt es auch auf die Größe der Konsole natürlich.
InformationsquelleAutor der Antwort Ralph Finch