Так как здесь есть несколько ответов, показывающих нерабочий код для Windows, вот пояснение:
Runtime.getRuntime().exec("cls");
Эта команда не работает по двум причинам:
Не существует исполняемого файла с именем cls.exeили cls.comв стандартной установке Windows, который можно было бы вызвать с помощью Runtime.exec, поскольку известная команда clsвстроена в интерпретатор командной строки Windows.
При запуске нового процесса через Runtime.execстандартный вывод перенаправляется в канал, который может прочитать инициирующий процесс Java. Но когда вывод clsкоманды перенаправляется, консоль не очищается.
Чтобы решить эту проблему, мы должны вызвать интерпретатор командной строки ( cmd) и сказать ему выполнить команду ( /c cls), которая позволяет вызывать встроенные команды. Далее мы должны напрямую подключить его выходной канал к выходному каналу процесса Java, который работает, начиная с Java 7, используя inheritIO():
@jdurston без указания home не вернет курсор в верхнюю часть окна.
Хьюго Цинк,
1
Не работает в Eclipse, но работает в терминале Linux. Один голос за вас
Ань Туан
7
Это работает, только если эмулятор терминала, в котором работает Java, поддерживает управляющие коды ANSI. Windows NT / XP /
Торбьерн Равн Андерсен
19
Вот как бы я справился с этим. Этот метод будет работать для случая ОС Windows и случая ОС Linux / Unix (что означает, что он также работает для Mac OS X).
publicfinalstaticvoid clearConsole(){try{finalString os =System.getProperty("os.name");if(os.contains("Windows")){Runtime.getRuntime().exec("cls");}else{Runtime.getRuntime().exec("clear");}}catch(finalException e){// Handle any exceptions.}}
Обратите внимание, что этот метод обычно не очищает консоль, если вы работаете внутри IDE.
На Windows 8.1:java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
Бен Легжеро
1
@BenLeggiero Эта ошибка возникает, если по какой-то причине команда cls не найдена JVM в каком-либо каталоге из переменной среды PATH. Весь этот код вызывает системную команду Windows или Unix, основанную на конфигурации системы по умолчанию, чтобы очистить окно командной строки или терминала соответственно. Это должно быть точно так же, как открыть окно терминала и набрать «cls», а затем клавишу «Enter».
Диндрилла
22
В clsWindows нет исполняемого файла. Это внутренняя команда cmd.exe.
a_horse_with_no_name
7
Как говорят другие, он вообще не работает , не только потому, что в Windows нет исполняемого файла cls, но и потому, что вывод подпроцессов перенаправляется.
Для этого можно напечатать несколько концов строк ("\ n") и смоделировать очистку экрана. В конце ясно, что самое большее в оболочке Unix, не удаляет предыдущий контент, только перемещает его вверх и, если вы сделаете прокрутку вниз, можно увидеть предыдущий контент.
При выполнении этого, если вы введете «очистить» в командной строке, он очистит экран. Убедитесь, что вы запускаете его с правильного терминала / консоли, а не в Eclipse.
Создайте метод в своем классе следующим образом: [как сказал здесь @Holger .]
publicstaticvoid clrscr(){//Clears Screen in javatry{if(System.getProperty("os.name").contains("Windows"))newProcessBuilder("cmd","/c","cls").inheritIO().start().waitFor();elseRuntime.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 80System.out.print("\b");// Prints a backspace
Я не буду рекомендовать вам использовать этот метод.
Это всего лишь подсказка, может быть, кто-то хочет очистить экран, На самом деле
Sarz
@Sarz: и собственно «очистка экрана» сама по себе тоже не имеет смысла
Gyom
0
Вы должны использовать управляющие символы как обратную косую черту (\ b) и возврат каретки (\ r). По умолчанию он отключен, но представление консоли может интерпретировать эти элементы управления.
Windows> «Установки» и « Выполнить / Отладка»> «Консоль» и выберите « Интерпретировать символы управления ASCII», чтобы включить его
После этих настроек вы можете управлять своей консолью с помощью управляющих символов, таких как:
\ t - вкладка
\ b - backspace (шаг назад в тексте или удаление одного символа).
Прежде всего используйте создать .dll с помощью visual studio, которая вызывает систему («cls»). После этого используйте JNI, чтобы использовать этот DDL.
Ответы:
Так как здесь есть несколько ответов, показывающих нерабочий код для Windows, вот пояснение:
Эта команда не работает по двум причинам:
Не существует исполняемого файла с именем
cls.exe
илиcls.com
в стандартной установке Windows, который можно было бы вызвать с помощьюRuntime.exec
, поскольку известная командаcls
встроена в интерпретатор командной строки Windows.При запуске нового процесса через
Runtime.exec
стандартный вывод перенаправляется в канал, который может прочитать инициирующий процесс Java. Но когда выводcls
команды перенаправляется, консоль не очищается.Чтобы решить эту проблему, мы должны вызвать интерпретатор командной строки (
cmd
) и сказать ему выполнить команду (/c cls
), которая позволяет вызывать встроенные команды. Далее мы должны напрямую подключить его выходной канал к выходному каналу процесса Java, который работает, начиная с Java 7, используяinheritIO()
:Теперь, когда процесс Java подключен к консоли, то есть запущен из командной строки без перенаправления вывода, он очистит консоль.
источник
Вы можете использовать следующий код для очистки консоли командной строки:
Для дальнейших ссылок посетите: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
источник
Вот как бы я справился с этим. Этот метод будет работать для случая ОС Windows и случая ОС Linux / Unix (что означает, что он также работает для Mac OS X).
Обратите внимание, что этот метод обычно не очищает консоль, если вы работаете внутри IDE.
источник
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
Windows нет исполняемого файла. Это внутренняя командаcmd.exe
.Для этого можно напечатать несколько концов строк ("\ n") и смоделировать очистку экрана. В конце ясно, что самое большее в оболочке Unix, не удаляет предыдущий контент, только перемещает его вверх и, если вы сделаете прокрутку вниз, можно увидеть предыдущий контент.
Вот пример кода:
источник
\r\n
с однойprintln
, поскольку междуprintln
вызовами заметна задержка .clear
заключается в том, что в последнем случае новый вывод будет вверху экрана, а не внизу.System.out.println(new String(new char[50]).replace("\0", "\r\n"));
будет делать работу быстрее и лучше.System.out.println(System.lineSeparator().repeat(50));
Если вы хотите более системный независимый способ сделать это, вы можете использовать JLine библиотеку и ConsoleReader.clearScreen () . Вероятно, стоит также провести осторожную проверку того, поддерживаются ли JLine и ANSI в текущей среде.
Что-то вроде следующего кода работает для меня:
При выполнении этого, если вы введете «очистить» в командной строке, он очистит экран. Убедитесь, что вы запускаете его с правильного терминала / консоли, а не в Eclipse.
источник
Создайте метод в своем классе следующим образом: [как сказал здесь @Holger .]
Это работает для Windows, по крайней мере, я не проверял для Linux до сих пор. Если кто-нибудь проверит его на Linux, пожалуйста, дайте мне знать, работает ли он (или нет).
Как альтернативный способ написать этот код в
clrscr()
:Я не буду рекомендовать вам использовать этот метод.
источник
Runtime.getRuntime (). Exec (cls) НЕ работал на моем ноутбуке с XP. Это сделал -
Надеюсь, это полезно
источник
Попробуйте следующее:
Это будет хорошо работать в среде Linux
источник
Это будет работать, если вы делаете это в Bluej или любом другом подобном программном обеспечении.
источник
Вы можете использовать эмуляцию
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
источник