Wie lösche ich die Konsole?

Lesezeit: 6 Minuten

Wie losche ich die Konsole
Sadia

Kann mir bitte jemand sagen, welcher Code für das Löschen des Bildschirms in Java verwendet wird?

Zum Beispiel in C++:

system("CLS");

Welcher Code wird in Java verwendet, um den Bildschirm zu löschen?

  • stackoverflow.com/questions/606086/…

    – Vanuan

    2. Februar 2011 um 20:07 Uhr

Wie losche ich die Konsole
Holger

Da es hier mehrere Antworten gibt, die nicht funktionierenden Code für Windows zeigen, hier eine Klarstellung:

Runtime.getRuntime().exec("cls");

Dieser Befehl tut es nicht Arbeit, aus zwei Gründen:

  1. Es gibt keine ausführbare Datei mit dem Namen cls.exe oder cls.com in einer Standard-Windows-Installation, die über aufgerufen werden könnte Runtime.execwie der bekannte Befehl cls ist in den Befehlszeileninterpreter von Windows integriert.

  2. Beim Starten eines neuen Prozesses über Runtime.exec, wird die Standardausgabe an eine Pipe umgeleitet, die der initiierende Java-Prozess lesen kann. Aber wenn die Ausgabe der cls Der Befehl wird umgeleitet, die Konsole wird nicht gelöscht.

Um dieses Problem zu lösen, müssen wir den Kommandozeileninterpreter aufrufen (cmd) und ihm sagen, dass es einen Befehl ausführen soll (/c cls), mit der integrierte Befehle aufgerufen werden können. Außerdem müssen wir seinen Ausgabekanal direkt mit dem Ausgabekanal des Java-Prozesses verbinden, der ab Java 7 funktioniert 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 nun der Java-Prozess mit einer Konsole verbunden ist, dh von einer Befehlszeile ohne Ausgabeumleitung gestartet wurde, löscht er die Konsole.

  • Warum funktioniert das bei mir nicht? Ich führe das Programm auf Windows CMD aus, aber der Bildschirm wird nicht gelöscht

    – Alist3r

    22. März 2016 um 14:23 Uhr

1646629031 719 Wie losche ich die Konsole
satt

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

For further references visit: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html

  • Care to add to this at all? What is this string and do you need to flush if autoflush is enabled?

    – cossacksman

    Nov 3, 2015 at 0:24

  • They are ANSI escape codes. Specifically clear screen, followed by home. But why is ‘home’ necessary?

    – jdurston

    Nov 12, 2015 at 20:01


  • @jdurston omitting home will not reset the cursor back to the top of the window.

    – Hugo Zink

    Sep 21, 2016 at 11:35

  • Doesn’t work in Eclipse, but work in Linux terminal. One vote for you

    – Anh Tuan

    Nov 7, 2016 at 9:15

  • This only works if the terminal emulator in which Java runs, supports ANSI escape codes. Windows NT/XP/7/8/10 CMD doesn’t

    – Thorbjørn Ravn Andersen

    Sep 17, 2017 at 23:16

1646629031 79 Wie losche ich die Konsole
Dyndrilliac

This is how I would handle it. This method will work for the Windows OS case and the Linux/Unix OS case (which means it also works for Mac OS X).

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.
    }
}

Note that this method generally will not clear the console if you are running inside an IDE.

  • On Windows 8.1: java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified

    – Ky.

    Oct 21, 2014 at 20:30


  • @BenLeggiero That error occurs if for some reason the cls command isn’t found by the JVM within some directory from the PATH environment variable. All this code does is call the Windows or Unix system command based on the default system configuration to clear the command prompt or terminal window respectively. It should be exactly the same as opening a terminal window and typing “cls” followed by the Enter key.

    – Dyndrilliac

    Oct 21, 2014 at 22:34

  • There is no cls executable in Windows. It is an internal command of cmd.exe.

    – a_horse_with_no_name

    Mar 26, 2015 at 13:35

  • As said by others, doesn’t work at all, not only because Windows has no cls executable, but also because the output of subprocesses gets redirected.

    – Holger

    Oct 27, 2015 at 22:55

  • This answer is also a topic on meta see: meta.stackoverflow.com/questions/308950/…

    – Petter Friberg

    Oct 28, 2015 at 20:35

1641831424 525 Wie kann ich manuell eine pyc Datei aus einer py Datei generieren
Abhishek Kashyap

Create a method in your class like this: [as @Holger said here.]

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 es bisher nicht für Linux überprüft. Wenn jemand es für Linux überprüft, lassen Sie mich bitte wissen, ob es funktioniert (oder nicht).

Als alternative Methode können Sie diesen Code in schreiben 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 diese Methode nicht empfehlen.

Eine Möglichkeit, dies zu erreichen, besteht darin, mehrere Zeilenenden (“\n”) zu drucken und den leeren Bildschirm zu simulieren. Am Ende löschen, höchstens in der Unix-Shell, entfernt nicht den vorherigen Inhalt, sondern 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();

  • Eine schnellere Möglichkeit, dies zu erreichen, ist das Drucken einer einzelnen Zeichenfolge von 50 \r\n mit einer einzigen printlnda es eine merkliche Verzögerung zwischen gibt println Anrufe.

    – Ky.

    22. Oktober 2014 um 20:01 Uhr

  • Woher wissen Sie, wie viele Zeilen die Konsole für die Anzeige konfiguriert ist? Könnte in den meisten Fällen funktionieren, aber nicht in allen.

    – Chiffre

    28. Oktober 2015 um 20:47 Uhr

  • Der größte Unterschied zwischen diesem und einem richtigen clear ist, dass in letzterem die neue Ausgabe am oberen Rand des Bildschirms und nicht am unteren Rand angezeigt wird.

    – ndm13

    12. Juli 2016 um 1:50 Uhr


  • System.out.println(new String(new char[50]).replace("\0", "\r\n")); wird die Arbeit schneller und besser erledigen.

    – Aaron Esau

    30. Dezember 2017 um 0:28 Uhr

  • @AaronEsau ab JDK 11 können Sie verwenden System.out.println(System.lineSeparator().repeat(50));

    – Holger

    13. November 2019 um 17:30 Uhr

1646629032 267 Wie losche ich die Konsole
stürzen

Wenn Sie dies auf eine systemunabhängigere Weise tun möchten, können Sie die verwenden JLine Bibliothek u ConsoleReader.clearScreen(). Vorsichtig prüfen, ob JLine und ANSI werden unterstützt im aktuellen Umfeld lohnt sich wahrscheinlich auch.

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 „clear“ eingeben, wird der Bildschirm gelöscht. Stellen Sie sicher, dass Sie es von einem geeigneten Terminal / einer geeigneten Konsole und nicht in Eclipse ausführen.

  • Eine schnellere Möglichkeit, dies zu erreichen, ist das Drucken einer einzelnen Zeichenfolge von 50 \r\n mit einer einzigen printlnda es eine merkliche Verzögerung zwischen gibt println Anrufe.

    – Ky.

    22. Oktober 2014 um 20:01 Uhr

  • Woher wissen Sie, wie viele Zeilen die Konsole für die Anzeige konfiguriert ist? Könnte in den meisten Fällen funktionieren, aber nicht in allen.

    – Chiffre

    28. Oktober 2015 um 20:47 Uhr

  • Der größte Unterschied zwischen diesem und einem richtigen clear ist, dass in letzterem die neue Ausgabe am oberen Rand des Bildschirms und nicht am unteren Rand angezeigt wird.

    – ndm13

    12. Juli 2016 um 1:50 Uhr


  • System.out.println(new String(new char[50]).replace("\0", "\r\n")); wird die Arbeit schneller und besser erledigen.

    – Aaron Esau

    30. Dezember 2017 um 0:28 Uhr

  • @AaronEsau ab JDK 11 können Sie verwenden System.out.println(System.lineSeparator().repeat(50));

    – Holger

    13. November 2019 um 17:30 Uhr

Versuche Folgendes :

System.out.print("\033\143");

Dies funktioniert gut in einer Linux-Umgebung

  • Es sollte oben sein! Arbeitete auf der Linux-Konsole.

    – Zahid Khan

    13. September 2020 um 6:58 Uhr

  • Danke! Funktioniert unter Linux, Android und Mac OS X.

    – Max Pierini

    2. Dezember 2021 um 17:40 Uhr

962950cookie-checkWie lösche ich die Konsole?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy