команды в Java, чтобы очистить экран - PullRequest
9 голосов
/ 03 февраля 2011

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

Ответы [ 11 ]

17 голосов
/ 15 марта 2013

Я думаю, что ОП хочет очистить экран и переместить курсор в исходное положение. Для этого попробуйте:

        final String ANSI_CLS = "\u001b[2J";
        final String ANSI_HOME = "\u001b[H";
        System.out.print(ANSI_CLS + ANSI_HOME);
        System.out.flush();
8 голосов
/ 03 февраля 2011

Это зависит от вашей консоли, но если она поддерживает escape-последовательности ANSI , попробуйте это ..

final static String ESC = "\033[";
System.out.print(ESC + "2J"); 
3 голосов
/ 28 февраля 2011

Запустите этот пример программы: он демонстрирует, как очистить консоль с помощью escape-последовательности и переместить курсор в положение X = 1, Y = 1.

Я тестировал его на нескольких терминалах Linux. Не знаю, работает ли он под Windows.
Возможно, вы можете сказать мне;)

Прочитайте эту статью о escape-последовательностях.

import java.io.*;

public class Main {

public static final char ESC = 27;

public static void main(String[] args)
        throws Exception {
    Console c = System.console();
    if (c == null) {
        System.err.println("no console");
        System.exit(1);
    }

    // clear screen only the first time
    c.writer().print(ESC + "[2J");
    c.flush();
    Thread.sleep(200);

    for (int i = 0; i < 100; ++i) {
        // reposition the cursor to 1|1
        c.writer().print(ESC + "[1;1H");
        c.flush();

        c.writer().println("hello " + i);
        c.flush();

        Thread.sleep(200);
    }
}

}
2 голосов
/ 03 февраля 2011

Очистка экрана обычно требует отправки специальных управляющих последовательностей , специфичных для экрана / терминала , под которым работает ваше приложение. Опции:

  1. Если вы знаете, что вы всегда будете работать под конкретным терминалом и сможете найти правильные последовательности управления для очистки экрана для этого терминала, просто выведите эти последовательности. Если вы скажете нам экран, мы сможем сказать вам последовательность (вероятно, в некоторой степени совместимую с ANSI / VT100 / VT220).

  2. Внешне убедитесь, что ваше приложение всегда запущено в нужном терминале, например скрипт для запуска вашего приложения запускает приложение в нужном терминале. Затем выведите необходимую последовательность символов, чтобы очистить экран.

  3. Возьмите под свой контроль терминал, используя библиотеку эмуляции терминала, т. Е. Ваше приложение теперь является оконным приложением, которое создает экран окна терминала для использования пользователем. Затем вы контролируете, какой терминал вы эмулируете, и будете знать, какие последовательности управления необходимы.

  4. Используйте библиотеку терминалов (например, историческую библиотеку curses), которая обнаруживает терминал и обеспечивает единый интерфейс для его функций. Смотрите этот вопрос:

    Что такое хорошая Java-подобная библиотека для терминальных приложений?

  5. Поддельные, написав несколько строк на экране.

1 голос
/ 09 сентября 2017

Если ни одно из перечисленных выше решений не работает для вас (как в моем случае), попробуйте это решение:

new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();

Я использую Windows 8, и это решение сработало для меня.Надеюсь, что это относится и к вам.:)

1 голос
/ 29 сентября 2016

очистка для bash, который работает на меня:

System.out.print(String.format("\033[H\033[2J"));
1 голос
/ 03 февраля 2011

Всегда есть очевидное (и клудкое) ..

int numRowsInConsole = 60;
for (int ii=0; ii<numRowsInConsole; ii++) {
    // scroll down one line
    System.out.println("");
}
0 голосов
/ 15 февраля 2017

Насколько мне известно, Windows 10 Command Window cmd.exe изначально не поддерживает последовательности ANSI ESC, несмотря на слухи. Иметь:

final String ANSI_CLS = "\u001b[2J";
System.out.print(ANSI_CLS);

Для работы метода вам необходим эмулятор командной строки, поддерживающий ANSI, например ConEmu64.

0 голосов
/ 25 мая 2016

Я сделал это в BlueJ, и он отлично работал: Попробуйте System.out.print ( "\ е");

0 голосов
/ 25 февраля 2015
System.out.println("Hello!");

печатает указанную строку и затем перемещает курсор на следующую строку.

System.out.print("Hello!");

печатает указанную строку и оставляет курсор сразу после этой строки.

Чтобы решить указанную выше проблему с курсором, находящимся во второй строке консоли, используйте print вместо println.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...