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

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

system("CLS");

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

Спасибо!

Ответ 1

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

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

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

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

  • При запуске нового процесса через 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 подключен к консоли, то есть он был запущен из командной строки без перенаправления вывода, он очистит консоль.

Ответ 2

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

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

Ответ 3

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

Ответ 4

Если вам нужен более независимый от системы способ сделать это, вы можете использовать библиотеку 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 + "'.");

        }
    }
}

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

Ответ 5

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

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

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

Ответ 6

Создайте метод в своем классе следующим образом: [как @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) {}
}

Это работает, по крайней мере, для окон, я пока не проверял 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

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

Ответ 7

Runtime.getRuntime(). exec (cls) НЕ работал на моем ноутбуке XP. Это произошло -

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

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

Ответ 8

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

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

Это отлично работает в среде Linux

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

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

Я нашел эту статью приятной:

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

Ответ 12

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