команды в java для очистки экрана

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

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

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

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

 final static String ESC = "\033["; System.out.print(ESC + "2J"); 

Запустите эту примерную программу: она демонстрирует, как очистить консоль с помощью 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); } } } 

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

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

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

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

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

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

  5. Подделайте его, написав кучу строк на экране.

Всегда есть очевидный (и kludgy) ..

 int numRowsInConsole = 60; for (int ii=0; ii 
 System.out.println("Hello!"); 

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

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

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

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

Я сделал это в BlueJ, и он отлично работал: Try System.out.print (“\ f”);

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

 System.out.print(String.format("\033[H\033[2J")); 

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

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

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

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

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

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

Существует два очень простых способа решения этой проблемы: первая – это опция грубой силы:

 for (int i=1; i<=10; i++) System.out.println("\n"); 

Проблема в том, что это только псевдо очищает экран, вы можете прокручивать вверх, чтобы видеть данные, но не бойтесь, есть другой способ!

 System.out.println("\f"); 

Вуаля! Это должно сделать трюк, хотя ваш курсор будет расположен во второй строке консоли после того, как экран будет очищен.

  • Adobe AIR для выполнения программы
  • Передача значения enums в качестве параметра команды из XAML
  • Давайте будем гением компьютера.