Antworten:
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.exe
oder cls.com
in einer Standard-Windows-Installation, über die aufgerufen werden könnte Runtime.exec
, da der bekannte Befehl cls
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 des cls
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 mit inheritIO()
:
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 nun mit einer Konsole verbunden ist, dh über eine Befehlszeile ohne Umleitung der Ausgabe gestartet wurde, wird die Konsole gelöscht.
Sie können den folgenden Code verwenden, um die Befehlszeilenkonsole zu löschen:
public static void clearScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
Weitere Referenzen finden Sie unter: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
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).
public final static void clearConsole()
{
try
{
final String os = System.getProperty("os.name");
if (os.contains("Windows"))
{
Runtime.getRuntime().exec("cls");
}
else
{
Runtime.getRuntime().exec("clear");
}
}
catch (final Exception e)
{
// Handle any exceptions.
}
}
Beachten Sie, dass diese Methode die Konsole im Allgemeinen nicht löscht, wenn Sie in einer IDE ausgeführt werden.
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 von cmd.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:
for (int i = 0; i < 50; ++i) System.out.println();
\r\n
mit einer einzelnen zu drucken println
, da zwischen den println
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:
import jline.console.ConsoleReader;
public class JLineTest
{
public static void main(String... args)
throws Exception
{
ConsoleReader r = new ConsoleReader();
while (true)
{
r.println("Good morning");
r.flush();
String input = r.readLine("prompt>");
if ("clear".equals(input))
r.clearScreen();
else if ("exit".equals(input))
return;
else
System.out.println("You typed '" + input + "'.");
}
}
}
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 .]
public static void clrscr(){
//Clears Screen in java
try {
if (System.getProperty("os.name").contains("Windows"))
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
else
Runtime.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 80
System.out.print("\b"); // Prints a backspace
Ich werde Ihnen nicht empfehlen, diese Methode zu verwenden.
Runtime.getRuntime (). Exec (cls) funktionierte NICHT auf meinem XP-Laptop. Dies tat -
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
Hoffe das ist nützlich
Versuche Folgendes :
System.out.print("\033\143");
Dies funktioniert gut in Linux-Umgebung
Dies funktioniert, wenn Sie dies in Bluej oder einer anderen ähnlichen Software tun.
System.out.print('\u000C');
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
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