Java 8 консоль

char Цикл статей «Учебник Java 8».

Следующая статья — «Java 8 локализация».
Предыдущая статья — «Java 8 форматирование и парсинг».

Стандартный поток ввода java.lang.System.in, стандартный поток выводы java.lang.System.out, стандартный поток ошибок java.lang.System.err  — все эти потоки по умолчанию обычно работают с консолью, но в некоторых случаях могут быть связаны с файлом или ещё чем-нибудь. Потоки java.lang.System.out  и java.lang.System.err  являются экземплярами класса java.io.PrintStream. Входной поток java.lang.System.in  является экземпляром java.io.InputStream. Мы уже рассматривали все эти классы и видели примеры их использования.

java.io.Console

Содержит методы для доступа к консоли, если есть консоль, связанная с текущей виртуальной машиной.

Имеет ли виртуальная машина консоль или нет, зависит от платформы и способа запуска виртуальной машины. Если виртуальная машина запущена со стандартной интерактивной консоли без перенаправления стандартных потоков ввода и вывода, то консоль есть, и обычно она связана с клавиатурой и экраном, из которого запущена виртуальная машина. Если виртуальная машина была запущена автоматически, например как фоновый процесс, то обычно она не имеет консоли.

Если виртуальная машина имеет консоль, то может быть получен уникальный экземпляр этого класса с помощью вызова java.lang.System.console(). Если нет доступной консоли, то метод вернёт null.

Операции ввода и вывода синхронизированы, чтобы гарантировать атомарное выполнение критических операций, поэтому вызов методов readLine(), readPassword(), format(), printf(), а также операции чтения, форматирования и записи из объектов, возвращённых из reader()  и writer()  могут привести к блокировке при многопоточности.

Вызов close()  для объектов, возвращённых из reader()  и writer()  не закрывает поток этих объектов.

Методы чтения из консоли возвращают null, если был достигнут конец потока ввода, например ввод Ctrl+D в Unix или Ctrl+Z в Windows. Последующие операции чтения будут успешны, если в консоль позже были введены дополнительные символы.

Если приложению нужно считать пароль или любую другую секретную информацию, то оно должно использовать readPassword()  или readPassword(String, Object..), а затем после обработки вручную забить пробелами считанный пароль, чтобы минимизировать время пребывания секретных данных в памяти.

Подробнее про очистку паролей из памяти после использования можно прочесть в моей специальной статье.

Полезные методы класса java.io.Console:

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

Форматированный вывод в консоль. Смотрите описание java.util.Formatter в статье «Java 8 форматирование и парсинг».

Форматированный вывод в консоль. Смотрите описание java.util.Formatter в статье «Java 8 форматирование и парсинг».

Возвращает java.io.Reader, связанный с консолью. Смотрите описание в статье «Java 8 потоки ввода/вывода».

Читает одну строку текста из консоли.

Выводит форматированную строку в консоль, а затем считывает одну строку введённого пользователем текста.

Используется для считывания паролей из консоли. Не отображает вводимые пользователем символы. Обратите внимание, что возвращается массив char-ов, это сделано специально из соображений безопасности. Подробнее читайте в статье про работу с паролями в Java.

Выводит форматированную строку, а затем считывает пароль с экрана. Не отображает вводимые пользователем символы.

Возвращает java.io.PrintWriter , связанный с этой консолью. Смотрите описание java.io.PrintWriter  в статье «Java 8 потоки ввода/вывода».

Цикл статей «Учебник Java 8».

Следующая статья — «Java 8 локализация».
Предыдущая статья — «Java 8 форматирование и парсинг».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *