2012-04-20 21 views
26

Я долго тянул за волосы. Я исследовал в течение часа о том, как очистить консоль на Java.Как очистить консоль в Java?

Все, что я нашел был грязный взлом либо распечатав кучу линий или выполнения этого

Runtime.getruntime.exec("cls/clear"); 

Однако ничто не кажется, работает для меня. Разве не существует способа очистки консоли на Java, как в C (clrscr();). Нет ли какой-либо внешней библиотеки, с помощью которой это может быть достигнуто.

Пожалуйста, дайте мне знать, если кто-либо когда-либо делал это, прежде чем использовать надлежащую функцию, библиотеку и т. Д. Вместо грязного взлома.

+1

'like C'? Я думаю, что единственный способ сделать это на C - использовать библиотеку, такую ​​как ncurses. Если это то, что вам нужно, этот вопрос описывает, как получить похожие/идентичные результаты с Java: http://stackoverflow.com/questions/439799/whats-a-good-java-curses-like-library-for-terminal -Приложения. – Hassan

+0

Если у вас есть терминал VT100, возможно, вы можете использовать коды Escape (Esc [2J \t Очистить весь экран \t ED2) см. Http://ascii-table.com/ansi-escape-sequences-vt-100.php Для других терминалов могут быть другие escape-коды. Консоль eclipse не содержит исключающего кода. – Andreas

+3

Аналогичный вопрос: ** [Java: очистить консоль] (http://stackoverflow.com/questions/2979383/java-clear-the-console) ** –

ответ

3
Runtime.getRuntime().exec("PlatformDepedentCode"); 

Необходимо заменить «PlatformDependentCode» на ясную консольную команду вашей платформы.

Метод exec() выполняет команду, введенную в качестве аргумента, точно так же, как если бы она была введена в консоль.

В Windows вы должны написать Runtime.getRuntime().exec("cls");.

+10

'Runtime.getRuntime(). Exec (" cls ") ; 'не работает (все время) на окнах. – Lion

0

Необходимо очистить консоль.

Для последовательных терминалов это обычно выполнялось с помощью так называемых «escape-последовательностей», где особенно широко поддерживается vt100 (и его близкий родственник ANSI-кузена).

Windows традиционно не поддерживала такие последовательности «из коробки», но полагалась на вызовы API для выполнения этих задач. Однако для версий Windows, основанных на DOS, для обеспечения такой поддержки можно установить драйвер ANSI.SYS.

Итак, если вы находитесь под Windows, вам необходимо взаимодействовать с соответствующим API Windows. Я не верю, что стандартная библиотека времени выполнения Java содержит код для этого.

16

Если ваш терминал поддерживает ANSI escape codes, это очищает экран и перемещает курсор на первую строку, первый столбец:

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

Это работает практически на все терминалы UNIX и эмуляторы терминала. Windows cmd.exe не интерпретирует escape-коды ANSI.

+0

не работает на консоли eclipse в ubuntu – sziraqui

+0

Это потому, что консоль Eclipse не поддерживает escape-коды ANSI. – IMustBeSomeone

1

Вы можете легко реализовать clrscr(), используя простую для печати цикла "\ b".

5

Попробуйте этот код

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 подключен к консоли, она очистит консоль.

-1

Если вы используете окна и заинтересованы в очистке экрана перед запуском программы, вы можете скомпилировать файл, который вызывается из файла .bat. , например:


ЦБС

ява «что когда-нибудь имя компилирует класса»


Сохранить как «и т.д.» .bat и затем запустить, вызвав его в командной строки или двойной щелчок по файлу

+1

, если ваш подход используется, тогда он очищает все перед запуском программы, но возникает вопрос об очистке экрана во время выполнения при запуске java-программы. –

1

Используйте следующий код:


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

'\ е' представляет собой последовательностьпобег, который представляет Под.стр. Это то, что я использовал в своих проектах, чтобы очистить консоль. Я думаю, это проще других кодов.

Смежные вопросы