Java: очистить консоль

Может ли кто-нибудь тело, пожалуйста, скажите мне, какой код используется для ясного экрана в Java? Например в C++

system("CLS");

Какой код используется в Java для очистки экрана?

Спасибо!

11 ответов

Вы можете использовать следующий код для очистки консоли командной строки:

public static void clearScreen() {  
    System.out.print("\033[H\033[2J");  
    System.out.flush();  
}  

Для дальнейших ссылок посетите: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html

Поскольку здесь есть несколько ответов, показывающих нерабочий код для Windows, вот пояснение:

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

Эта команда не работает по двум причинам:

  1. Не существует исполняемого файла с именем cls.exe или же cls.com в стандартной установке Windows, которая может быть вызвана через Runtime.exec, как всем известная команда cls встроен в интерпретатор командной строки Windows.

  2. При запуске нового процесса через Runtime.execстандартный вывод перенаправляется в канал, который может прочитать инициирующий Java-процесс. Но когда на выходе cls команда перенаправляется, она не очищает консоль.

Чтобы решить эту проблему, мы должны вызвать интерпретатор командной строки (cmd) и скажите ему выполнить команду (/c cls), который позволяет вызывать встроенные команды. Далее мы должны напрямую подключить его выходной канал к выходному каналу процесса Java, который работает, начиная с Java 7, используя 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();
    }
}

Теперь, когда Java-процесс подключен к консоли, т.е. запущен из командной строки без перенаправления вывода, он очистит консоль.

Вот как бы я справился с этим. Этот метод будет работать для случая ОС Windows и случая ОС Linux/Unix (что означает, что он также работает для 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.
    }
}

Попробуйте следующее:

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

Это будет хорошо работать в среде Linux

Для этого можно напечатать несколько концов строк ("\n") и смоделировать очистку экрана. В конце ясно, что самое большее в оболочке Unix, не удаляет предыдущий контент, только перемещает его вверх и, если вы сделаете прокрутку вниз, можно увидеть предыдущий контент.

Вот пример кода:

for (int i = 0; i < 50; ++i) System.out.println();

Создайте метод в своем классе следующим образом: [как сказал Holger.]

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) {}
}

Это работает для Windows, по крайней мере, я не проверял для Linux до сих пор. Если кто-нибудь проверит его на Linux, пожалуйста, дайте мне знать, работает ли он (или нет).

Как альтернативный метод, чтобы написать этот код в 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

Я не буду рекомендовать вам использовать этот метод.

Если вам нужен более независимый от системы способ сделать это, вы можете использовать библиотеку JLine и ConsoleReader.clearScreen (). Вероятно, стоит также провести осторожную проверку того, поддерживаются ли JLine и ANSI в текущей среде.

Что-то вроде следующего кода работает для меня:

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 + "'.");

        }
    }
}

При выполнении этого, если вы введете "очистить" в командной строке, он очистит экран. Убедитесь, что вы запускаете его с правильного терминала / консоли, а не в Eclipse.

Runtime.getRuntime(). Exec(cls) НЕ работал на моем ноутбуке с XP. Это сделал -

for(int clear = 0; clear < 1000; clear++)
  {
     System.out.println("\b") ;
  }

Надеюсь, это полезно

Объединив все данные ответы, этот метод должен работать во всех средах:

public static void clearConsole() {
    try {
        if (System.getProperty("os.name").contains("Windows")) {
            new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
        }
        else {
            System.out.print("\033\143");
        }
    } catch (IOException | InterruptedException ex) {}
}

Попробуйте следующее: работает только на консоли, а не в интегрированной консоли NetBeans.

    public static void cls(){
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) {}

}

Это будет работать, если вы делаете это в Bluej или любом другом подобном программном обеспечении.

System.out.print('\u000C');

Вы можете использовать эмуляцию cls с for (int i = 0; i < 50; ++i) System.out.println();

Вам необходимо использовать управляющие символы в виде обратной косой черты (\b) и возврата каретки (\r). По умолчанию он отключен, но представление консоли может интерпретировать эти элементы управления.

Windows> Настройки и Запуск / Отладка> Консоль и выберите Интерпретировать управляющие символы ASCII, чтобы включить его.

После этих настроек вы можете управлять своей консолью с помощью таких управляющих символов, как:

\ t - таб.

\ b - backspace (шаг назад по тексту или удаление одного символа).

\ n - новая строка.

\ r - возврат каретки. ()

\ f - подача формы.

Дополнительная информация: https://www.eclipse.org/eclipse/news/4.14/platform.php

Вам нужно использовать JNI.

Прежде всего используйте создать.dll с помощью visual studio, которая вызывает систему ("cls"). После этого используйте JNI, чтобы использовать этот DDL.

Я нашел эту статью, которая хороша:

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2

Runtime.getRuntime().exec("cls");
Другие вопросы по тегам