Как очистить экран в java
Способы очистить консоль?
Я уже давно этим занимаюсь, и за последние три дня разорвал Интернет на части, чтобы найти способы эффективно очистить консоль на Java.
Как я это видел «сделано»
Сюда for (int x = 0; x! = 100; x ++) < System.out.println (); >Отстой, так как вы можете просто прокрутить вверх и снова увидеть напечатанные операторы.
Console.Clear(); и все его варианты у меня не работали.
Runtime.getRuntime().exec(«cls»); не работал во всех случаях, в которых я пытался его использовать.
(Я использую JCreator для программирования, понятия не имею, связано ли это с моей проблемой)
Но, к сожалению, я не смог заставить его работать на меня. У меня возникли ошибки, что все методы, которые он вызвал из консоли, не существуют. java.io.*; был импортирован Его метод специально очищает одну строку, поэтому, если кто-то может заставить это работать, (Опять же, я использую JCreator для кодирования, я не знаю, есть ли здесь что-нибудь для Что делать с моей проблемой) Я видел, как он зацикливается, чтобы очистить все строки.
Как стать менее отстойным?
Вернемся к этому for (int x = 0; x! = 100; x ++) < System.out.println (); >Есть ли способ запретить пользователю прокрутку вверх в командной строке? Чтобы установить курсор в левый верхний угол подсказки? Это сделало бы этот метод намного более полезным.
Другая теория
Есть ли способ просто сказать java, чтобы она прекратила печать в одной командной строке, начала печать в другой и закрыла окно первой, чтобы казалось, что консоль только очистилась, а вместо этого была создана совершенно новая? Я размышлял об этом последние два часа, и теоретически это сработает, но я не знаю, существует ли вообще код для этого.
3 ответа
Нет надежного способа, который работал бы везде. Вы уже в основном это обнаружили.
Кроме того, вывод любой программы командной строки может быть перенаправлен в файл без ведома программы, и в этом случае «очистить экран» не имеет большого значения.
Если у вас ДОЛЖЕН быть такой уровень контроля, вам придется написать собственное окно отображения, используя Swing, AWT или GWT или что-то еще, и управлять всем взаимодействием там.
Ответ зависит от погоды или нет, вы используете ОС Linux или Windows. Если вы используете Linux и хотите очистить консоль, попробуйте:
try <
new ProcessBuilder(«/usr/bin/clear»).inheritIO().start().waitFor();
> catch(Exception e) <>
Если вы используете Windows, попробуйте:
try <
new ProcessBuilder(«cmd», «/c», «cls»).inheritIO().start().waitFor();
> catch(Exception e) <>
Вы можете обрабатывать исключение любым удобным для вас способом, это не имеет значения, потому что вы его не получите.
Если это приложение командной строки и терминал / оболочка, в которой вы запускаете приложение, поддерживает escape-коды ANSI, вы можете просто сделать это:
команды в java для очистки экрана
Какая команда в Java позволит вам очистить консоль в приложении командной строки?
11 ответов
Я думаю, что OP хочет очистить экран и переместить курсор в исходное положение. Для этого попробуйте:
Запустите этот пример программы: он демонстрирует, как очистить консоль с помощью escape-последовательности и переместить курсор в положение X=1, Y=1.
Я протестировал его на нескольких терминалах Linux. Не знаю, работает ли он под Windows.
Может быть, вы мне скажете 😉
Прочитайте эту статью о escape-последовательностях.
Очистка экрана обычно требует отправки специальных управляющих последовательностей, специфичных для экрана/terminal , под которым работает ваше приложение. Опции:
Если вы знаете, что всегда будете работать под определенным terminal и сможете найти правильные управляющие последовательности, чтобы очистить экран для этого terminal, просто выведите эти последовательности. Если вы сообщите нам экран, мы, возможно, сможем сообщить вам последовательность (вероятно, она несколько совместима с ANSI/VT100/VT220).
Внешне убедитесь, что ваше приложение всегда запускается в нужном terminal, например скрипт для запуска вашего приложения запускает приложение в нужном terminal. Затем выведите необходимую последовательность символов, чтобы очистить экран.
Возьмите под свой контроль terminal с помощью библиотеки эмуляции terminal, т. Е. Ваше приложение теперь является оконным приложением, которое создает экран окна terminal для использования пользователем. Затем вы контролируете, какие terminal вы эмулируете, и будете знать, какие последовательности управления необходимы.
Используйте библиотеку terminal (например как и историческая библиотека curses ), которая обнаруживает terminal и обеспечивает единый интерфейс для его функций. См. Этот вопрос:
Подделайте это, написав кучу строк на экране.
Может ли кто-нибудь сказать мне, какой код используется для очистки экрана в Java? Например, в C++ system(CLS); Какой код используется в Java для очистки экрана? Спасибо!
Я нашел пакет HTML Agility Pack полезным и простым в использовании для очистки экрана веб-сайтов. Какова эквивалентная библиотека для очистки экрана HTML в Java, Ruby, Python?
очистка для bash, которая работает на меня:
Если ни одно из вышеперечисленных решений не работает для вас( как в моем случае ), попробуйте это решение:
Я использую Windows 8, и это решение сработало для меня. Надеюсь, что и вам тоже. 🙂
Всегда есть очевидное (и клуджи)..
печатает указанную строку, а затем перемещает курсор на следующую строку.
печатает указанную строку и оставляет курсор сразу после этой строки.
Насколько мне известно, командное окно Windows 10 cmd.exe изначально не поддерживает последовательности ANSI ESC, несмотря на слухи. Чтобы иметь:
метод работы вам нужен эмулятор командной строки, который поддерживает ANSI, например ConEmu64.
Я сделал это в BlueJ году, и это сработало отлично: Попробуй System.out.print(«\f»);
Есть два очень простых способа решить эту проблему, первый-это вариант грубой силы:
Проблема с этим, однако, заключается в том, что он только псевдо очищает экран, вы можете прокрутить вверх, чтобы увидеть данные, но не бойтесь, есть другой способ!
Вуаля! Это должно сработать, хотя ваш курсор будет расположен на второй строке консоли после того, как экран будет очищен.
Похожие вопросы:
В узорчатой структуре MVC где наиболее логично было бы расположить модуль очистки экрана? В модели или в контроллере? Или она полностью выходит за рамки этого паттерна?
Я привык использовать метод delayed_jobs для входа в консоль, чтобы увидеть, что находится в очереди, и легкость очистки очереди, когда это необходимо. Есть ли для этого подобные команды в Sidekiq.
Я собираюсь разработать кросс-платформенное приложение, которое будет нуждаться в некоторых возможностях очистки экрана. Само приложение выглядит как очевидный кандидат на Phonegap, так как UI.
Может ли кто-нибудь сказать мне, какой код используется для очистки экрана в Java? Например, в C++ system(CLS); Какой код используется в Java для очистки экрана? Спасибо!
Я нашел пакет HTML Agility Pack полезным и простым в использовании для очистки экрана веб-сайтов. Какова эквивалентная библиотека для очистки экрана HTML в Java, Ruby, Python?
Существует ли одна команда для очистки экрана интерпретатора Python каждый раз, когда выполняется код в PyScripter? спасибо,
Есть ли в JAVA какая-либо функция для очистки окна вывода? как clrscr() в C. На самом деле я хочу очистить экран Dos от java при нажатии клавиши switch(a) case 1: clrscr(); case 2: Exit();
Java: очистить консоль
Может ли любой орган рассказать мне, какой код используется для прозрачного экрана в Java? Например, в С++
Какой код используется в Java для прозрачного экрана?
ОТВЕТЫ
Ответ 1
Поскольку здесь несколько ответов показывают нерабочий код для Windows, вот пояснение:
Эта команда не работает по двум причинам:
При запуске нового процесса через Runtime.exec стандартный вывод перенаправляется на канал, который может считывать инициирующий процесс Java. Но когда вывод команды cls перенаправляется, он не очищает консоль.
Чтобы решить эту проблему, мы должны вызвать интерпретатор командной строки ( cmd ) и сообщить ему выполнить команду ( /c cls ), которая позволяет вызывать встроенные команды. Далее нам нужно напрямую подключить его выходной канал к выходному каналу процесса Java, который работает с Java 7, используя inheritIO() :
Теперь, когда процесс Java подключен к консоли, то есть он был запущен из командной строки без перенаправления вывода, он очистит консоль.
Ответ 2
Вы можете использовать следующий код для очистки консоли командной строки:
Ответ 3
Вот как бы я справился с этим. Этот метод будет работать для случая ОС Windows и корпуса Linux/Unix OS (что означает, что он также работает для Mac OS X).
Ответ 4
Если вам нужен более независимый от системы способ сделать это, вы можете использовать библиотеку JLine и ConsoleReader.clearScreen(). Разумная проверка того, поддерживается ли поддержка JLine и ANSI в текущей среде, тоже стоит сделать.
Что-то вроде следующего кода работало для меня:
При выполнении этого, если вы наберете «clear» в приглашении, он очистит экран. Убедитесь, что вы запустили его из соответствующего терминала/консоли, а не в Eclipse.
Ответ 5
Для этого можно напечатать несколько строк ( «\n» ) и имитировать экран очистки. В конце ясно, самое большее в оболочке unix, не удаляет предыдущий контент, только перемещает его, и если вы делаете прокрутку вниз, можете видеть предыдущий контент.
Ответ 6
Создайте метод в своем классе следующим образом: [как @Holger сказал здесь.]
Это работает, по крайней мере, для окон, я пока не проверял Linux. Если кто-нибудь проверяет его на Linux, сообщите мне, работает ли он (или нет).
В качестве альтернативного метода следует написать этот код в clrscr() :
Я не буду рекомендовать вам использовать этот метод.
Ответ 7
Надеюсь, это полезно
Ответ 8
Это отлично работает в среде Linux
Ответ 9
Вы можете использовать эмуляцию cls с for (int i = 0; i
Ответ 10
Это будет работать, если вы делаете это в Bluej или любом другом подобном программном обеспечении.
команды в Java для очистки экрана
Какая команда в Java позволит вам очистить консоль в приложении командной строки?
Я думаю, что ОП хочет очистить экран и переместить курсор в исходное положение. Для этого попробуйте:
Запустите этот пример программы: он демонстрирует, как очистить консоль с помощью escape-последовательности и переместить курсор в положение X = 1, Y = 1.
Я проверил это на нескольких терминалах Linux. Не знаю, работает ли он под Windows.
Возможно, вы можете сказать мне;)
Читайте эту статью о escape-последовательностях.
Для очистки экрана обычно требуется отправка специальных управляющих последовательностей специфично для экрана/терминала, под которыми работает ваше приложение. Опции:
Если вы знаете, что вы всегда будете работать под конкретным терминалом и сможете найти правильные последовательности управления, чтобы очистить экран для этого терминала, просто выведите эти последовательности. Если вы скажете нам экран, мы сможем определить последовательность (вероятно, совместимую с ANSI/VT100/VT220).
Внешне убедитесь, что ваше приложение всегда запущено в нужном терминале, например, скрипт для запуска вашего приложения запускает приложение в нужном терминале. Затем выведите необходимую последовательность символов, чтобы очистить экран.
Возьмите под свой контроль терминал, используя библиотеку эмуляции терминала, т.е. ваше приложение теперь является оконным приложением, которое создает экран окна терминала для использования пользователем. Затем вы управляете тем терминалом, который вы эмулируете, и будете знать, какие последовательности управления необходимы.
Используйте библиотеку терминалов (например, историческую библиотеку curses ), которая обнаруживает терминал и обеспечивает единый интерфейс для его функций. Смотрите этот вопрос:
Поддельные, написав несколько строк на экране.
Как очистить экран в java
Профиль
Группа: Участник
Сообщений: 48
Регистрация: 24.2.2009
Где: Черкассы
Вот такой, надеюсь несложный, вопрос.
В С++ есть функция clrscr() (clear screen, очистить экран) в conio.h.
(Да, знаю, не в С++, а в соответствующем header-файле).
Шустрый
Профиль
Группа: Участник
Сообщений: 110
Регистрация: 21.9.2007
Где: Харьков
Репутация: 6
Всего: 7
Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City
Репутация: 8
Всего: 191
Опытный
Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.
Репутация: 11
Всего: 15
| Код |
| public class Test< |
public static void main(String[] args) throws Exception<
System.out.println(1);
Runtime.getRuntime().exec(«cls»);
System.out.println(2);
>
>
Добавлено через 1 минуту и 44 секунды
Цитата(Samotnik @ 25.2.2009, 10:51 ) |
| String ANSI_CLEAR_SEQ = «\u001b[2J»; System.out.println(ANSI_CLEAR_SEQ); |
| Цитата |
| E:\tests2>java Test 1 ←[2J 2 |
Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City
Репутация: 8
Всего: 191
Опытный
Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia
Репутация: 2
Всего: 4
без различных загрузок сработает
Опытный
Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007
Репутация: 2
Всего: 9
Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City
Репутация: 8
Всего: 191
Опытный
Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.
Репутация: 11
Всего: 15
| Код |
| public class ConsoleDemo < |
public static void main(String[] args) <
System.loadLibrary(«ConsoleDemo»);
System.out.println(«1»);
System.out.println(«2»);
System.out.println(«3»);
system(«pause»);
system(«cls»);
System.out.println(«3»);
System.out.println(«2»);
System.out.println(«1»);
system(«pause»);
>
public static native void system(String str);
>
#ifndef _Included_ConsoleDemo
#define _Included_ConsoleDemo
#ifdef __cplusplus
extern «C» <
#endif
/*
* Class: ConsoleDemo
* Method: system
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_ConsoleDemo_system
(JNIEnv *, jclass, jstring);
#ifdef __cplusplus
>
#endif
#endif
| Код |
| #include «ConsoleDemo.h» #include |
JNIEXPORT void JNICALL Java_ConsoleDemo_system(JNIEnv *env, jclass jclazz, jstring jstr) <
const char *str = (*env).GetStringUTFChars(jstr, NULL);
if (str == NULL) <
return; // Exception?
>
system(str);
(*env).ReleaseStringUTFChars(jstr, str);
>
Штурман
Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург
Репутация: 51
Всего: 118
Профиль
Группа: Участник
Сообщений: 48
Регистрация: 24.2.2009
Где: Черкассы
Чтобы, например, на 100% ТАК ЖЕ в Яве написать те же простенькие программы для ДОС, которые у меня в старой книжке по Паскалю написаны.
А bat-файлик я сразу для таких целей сделал.
echo off rem Шоб ничего на экране не отсвечивало
cls
java MojaProgramma
Добавлено через 4 минуты и 1 секунду
без различных загрузок сработает
Спасибо, это понятно. Уже думал пойти таким простым путём.
Только тогда курсор будет на последней, а не на первой строке экрана.
Добавлено через 8 минут и 23 секунды
Leprechaun Software Developer
Профиль
Группа: Модератор
Сообщений: 15683
Регистрация: 24.3.2004
Репутация: 206
Всего: 534
Профиль
Группа: Участник
Сообщений: 48
Регистрация: 24.2.2009
Где: Черкассы
Нет, ну кроме шуток, можно работающий исходник с этой штукой?
Потому что иначе получается вполне прогнозируемый результат, как написали уже выше, и как я уже пробовал ещё ДО того, как задал этот вопрос на этот форум.
Глянем на эту строку с точки зрения обычного синтаксиса Явы: System.out.println («\u001b[2J»);
Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City
Репутация: 8
Всего: 191
Цитата(Nikolja @ 27.2.2009, 16:07 ) |
| Нет, ну кроме шуток, можно работающий исходник с этой штукой? |



















)