«Backspace» символ в STDOUT в Java? - PullRequest
0 голосов
/ 16 апреля 2011

Я создаю простое приложение, которое в основном выполняет следующее:

logger.debug("Server start.");
server.start();
System.in.read();
logger.debug("Server stop.");
server.stop();

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

Server start
Server stop

... а не так:

Server start

Server stop

, если пользователь нажал «ENTER» в приглашении.Как я могу это сделать?Как я могу съесть все напечатанные символы, а затем закрыть свой сервер, как в примере выше?

Ответы [ 2 ]

1 голос
/ 16 апреля 2011

Я не думаю, что это возможно в чистой Java, потому что манипулирование символами в окне терминала должно выполняться управляющей библиотекой терминала (например, curses ). Базовые API Java не предоставляют такую ​​функциональность, но могут быть оболочки JNI (такие как Java Curses ).

0 голосов
/ 16 апреля 2011

Если вы измените поток ввода для system.in на что-то другое, ввод будет перенаправлен на что-то другое, кроме консоли.Это должно «стереть» эту строку.

Ссылка: download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#setIn(java.io.InputStream)

Там написано 5.0, но метод все еще должен существовать в 6.

Оглядываясь назад, я не уверен, что это сработает.Не открывайте Java передо мной, поэтому не уверен, что это сработает.

Редактировать Если у вас есть контроль над регистратором, можете ли вы помешать ему напечатать символ новой строки?Это было бы проще всего.

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