Spec-Zone.ru › OpenJDK 27

Класс Console

java.lang.Object
java.io.Console
Все реализуемые интерфейсы:
Flushable
public sealed class Console extends Object implements Flushable
Методы доступа к символьному консольному устройству, если оно имеется, связанному с текущей виртуальной машиной Java.

Наличие консоли у виртуальной машины зависит от базовой платформы, а также от способа запуска виртуальной машины. Если виртуальная машина запущена из интерактивной командной строки без перенаправления стандартных потоков ввода и вывода, то ее консоль, как правило, существует и будет подключена к клавиатуре и дисплею, с которых была запущена виртуальная машина. Если стандартный ввод или стандартный вывод перенаправлены (например, в файл или канал) либо виртуальная машина запущена планировщиком фоновых заданий, консоли не будет.

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

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

В операциях чтения и записи используются Charset, указанные методами stdin.encoding и stdout.encoding соответственно. Charset, используемую для операций записи, также можно получить с помощью метода charset(). Поскольку Console предназначен для интерактивного использования в терминале, эти наборы символов обычно совпадают.

Операции форматирования строк зависят от локали: для создания локализованных форматированных строк используется либо указанный Locale, либо default format Locale.

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

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

Если не указано иное, передача аргумента null любому методу этого класса приведет к выбрасыванию исключения NullPointerException.

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

Console cons;
char[] passwd;
if ((cons = System.console()) != null &&
    (passwd = cons.readPassword("[%s]", "Password:")) != null) {
    ...
    java.util.Arrays.fill(passwd, ' ');
}
Начиная с:
1.6

Краткое описание методов

Модификатор и тип Метод Описание
Charset charset()
Возвращает объект Charset, используемый для операций записи в эту Console.
void flush()
Очищает буфер консоли и принудительно немедленно записывает все буферизованные выходные данные.
Console format(String format, Object... args)
Записывает форматированную строку в выходной поток этой консоли, используя указанную строку формата и аргументы с default format locale.
Console format(Locale locale, String format, Object... args)
Записывает форматированную строку в выходной поток этой консоли, используя указанную строку формата и аргументы с указанным locale.
boolean isTerminal()
Возвращает true, если экземпляр Console является терминалом.
Console printf(String format, Object... args)
Удобный метод для записи форматированной строки в выходной поток этой консоли с использованием указанной строки формата и аргументов с default format locale.
Console printf(Locale locale, String format, Object... args)
Удобный метод для записи форматированной строки в выходной поток этой консоли с использованием указанной строки формата и аргументов с указанным locale.
Reader reader()
Получает уникальный объект Reader, связанный с этой консолью.
String readLine()
Считывает одну строку текста из консоли.
String readLine(String format, Object... args)
Выводит форматированную подсказку с использованием default format locale, а затем считывает одну строку текста из консоли.
String readLine(Locale locale, String format, Object... args)
Выводит форматированную подсказку с использованием указанного locale, а затем считывает одну строку текста из консоли.
char[] readPassword()
Считывает пароль или парольную фразу из консоли с отключенным отображением вводимых символов.
char[] readPassword(String format, Object... args)
Выводит форматированную подсказку с использованием default format locale, а затем считывает пароль или парольную фразу из консоли с отключенным отображением вводимых символов.
char[] readPassword(Locale locale, String format, Object... args)
Выводит форматированную подсказку с использованием указанного locale, а затем считывает пароль или парольную фразу из консоли с отключенным отображением вводимых символов.
PrintWriter writer()
Получает уникальный объект PrintWriter, связанный с этой консолью.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определенного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определенного промежутка реального времени.

Подробное описание методов

writer

public PrintWriter writer()
Возвращает уникальный объект PrintWriter, связанный с этой консолью.
Возвращает:
Объект printwriter, связанный с этой консолью

reader

public Reader reader()
Возвращает уникальный объект Reader, связанный с этой консолью.

Этот метод предназначен для использования в сложных приложениях, например, объектом Scanner, который использует широкие возможности синтаксического анализа и сканирования, предоставляемые Scanner:

    Console con = System.console();
    if (con != null) {
        Scanner sc = new Scanner(con.reader());
        ...
    }

Для простых приложений, которым требуется чтение только построчно, используйте readLine(String, Object...).

Операции чтения большого объёма данных read(char[]), read(char[], int, int) и read(java.nio.CharBuffer) возвращённого объекта не будут считывать символы за пределами текущей строки при каждом вызове, даже если в буфере назначения есть место для большего количества символов. Методы read объекта Reader могут блокироваться, если ограничение строки ещё не введено или не достигнуто на устройстве ввода консоли. Границей строки считается перевод строки ('\n'), возврат каретки ('\r'), возврат каретки, за которым непосредственно следует перевод строки, или конец потока.

Возвращает:
Объект reader, связанный с этой консолью

format

public Console format(String format, Object... args)
Записывает форматированную строку в выходной поток этой консоли, используя указанную строку формата и аргументы с default format locale.
Параметры:
format — строка формата, описанная в разделе Format string syntax.
args — аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов может быть переменным, в том числе нулевым. Максимальное количество аргументов ограничено максимальной размерностью массива Java, определённой в Спецификации виртуальной машины Java. Поведение при аргументе типа null зависит от conversion.
Возвращает:
Эту консоль
Выбрасывает:
IllegalFormatException — если строка формата содержит недопустимый синтаксис, спецификатор формата, несовместимый с заданными аргументами, недостаточное количество аргументов для строки формата или другие недопустимые условия. Описание всех возможных ошибок форматирования см. в разделе Details спецификации класса formatter.

format

public Console format(Locale locale, String format, Object... args)
Записывает форматированную строку в выходной поток этой консоли, используя указанную строку формата и аргументы с указанной локалью locale.
Параметры:
locale — локаль, применяемая при форматировании. Если locale равен null, локализация не применяется.
format — строка формата, описанная в разделе Format string syntax.
args — аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов может быть переменным, в том числе нулевым. Максимальное количество аргументов ограничено максимальной размерностью массива Java, определённой в Спецификации виртуальной машины Java. Поведение при аргументе типа null зависит от conversion.
Возвращает:
Эту консоль
Выбрасывает:
IllegalFormatException — если строка формата содержит недопустимый синтаксис, спецификатор формата, несовместимый с заданными аргументами, недостаточное количество аргументов для строки формата или другие недопустимые условия. Описание всех возможных ошибок форматирования см. в разделе Details спецификации класса formatter.
Начиная с версии:
23

printf

public Console printf(String format, Object... args)
Вспомогательный метод для записи форматированной строки в выходной поток этой консоли с использованием указанной строки формата и аргументов с default format locale.
Требования к реализации:
То же, что и вызов format(format, args).
Параметры:
format — строка формата, описанная в разделе Format string syntax.
args — аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов может быть переменным, в том числе нулевым. Максимальное количество аргументов ограничено максимальной размерностью массива Java, определённой в Спецификации виртуальной машины Java. Поведение при аргументе типа null зависит от conversion.
Возвращает:
Эту консоль
Выбрасывает:
IllegalFormatException — если строка формата содержит недопустимый синтаксис, спецификатор формата, несовместимый с заданными аргументами, недостаточное количество аргументов для строки формата или другие недопустимые условия. Описание всех возможных ошибок форматирования см. в разделе Details спецификации класса formatter.

printf

public Console printf(Locale locale, String format, Object... args)
Вспомогательный метод для записи форматированной строки в выходной поток этой консоли с использованием указанной строки формата и аргументов с указанной локалью locale.
Требования к реализации:
То же, что и вызов format(locale, format, args).
Параметры:
locale — локаль, применяемая при форматировании. Если locale равен null, локализация не применяется.
format — строка формата, описанная в разделе Format string syntax.
args — аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов может быть переменным, в том числе нулевым. Максимальное количество аргументов ограничено максимальной размерностью массива Java, определённой в Спецификации виртуальной машины Java. Поведение при аргументе типа null зависит от conversion.
Возвращает:
Эту консоль
Выбрасывает:
IllegalFormatException — если строка формата содержит недопустимый синтаксис, спецификатор формата, несовместимый с заданными аргументами, недостаточное количество аргументов для строки формата или другие недопустимые условия. Описание всех возможных ошибок форматирования см. в разделе Details спецификации класса formatter.
Начиная с версии:
23

readLine

public String readLine(String format, Object... args)
Выводит форматированную подсказку с использованием default format locale, а затем считывает одну строку текста из консоли.
Параметры:
format — строка формата, описанная в разделе Format string syntax.
args — аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов может быть переменным, в том числе нулевым. Максимальное количество аргументов ограничено максимальной размерностью массива Java, определённой в Спецификации виртуальной машины Java. Поведение при аргументе типа null зависит от conversion.
Возвращает:
Строку, содержащую считанную из консоли строку без символов завершения строки, или null, если достигнут конец потока.
Выбрасывает:
IllegalFormatException — если строка формата содержит недопустимый синтаксис, спецификатор формата, несовместимый с заданными аргументами, недостаточное количество аргументов для строки формата или другие недопустимые условия. Описание всех возможных ошибок форматирования см. в разделе Details спецификации класса formatter.
IOError — если произошла ошибка ввода-вывода.

readLine

public String readLine(Locale locale, String format, Object... args)
Выводит форматированную подсказку с использованием указанной локали locale, а затем считывает одну строку текста из консоли.
Параметры:
locale — локаль, применяемая при форматировании. Если locale равен null, локализация не применяется.
format — строка формата, описанная в разделе Format string syntax.
args — аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов может быть переменным, в том числе нулевым. Максимальное количество аргументов ограничено максимальной размерностью массива Java, определённой в Спецификации виртуальной машины Java. Поведение при аргументе типа null зависит от conversion.
Возвращает:
Строку, содержащую считанную из консоли строку без символов завершения строки, или null, если достигнут конец потока.
Выбрасывает:
IllegalFormatException — если строка формата содержит недопустимый синтаксис, спецификатор формата, несовместимый с заданными аргументами, недостаточное количество аргументов для строки формата или другие недопустимые условия. Описание всех возможных ошибок форматирования см. в разделе Details спецификации класса formatter.
IOError — если произошла ошибка ввода-вывода.
Начиная с версии:
23

readLine

public String readLine()
Считывает одну строку текста из консоли.
Возвращает:
Строку, содержащую считанную из консоли строку без символов завершения строки, или null, если достигнут конец потока.
Выбрасывает:
IOError — если произошла ошибка ввода-вывода.

readPassword

public char[] readPassword(String format, Object... args)
Выводит форматированную подсказку с использованием default format locale, а затем считывает пароль или парольную фразу из консоли с отключённым отображением вводимых символов.
Параметры:
format — строка формата, описанная в разделе Format string syntax, для текста подсказки.
args — аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов может быть переменным, в том числе нулевым. Максимальное количество аргументов ограничено максимальной размерностью массива Java, определённой в Спецификации виртуальной машины Java. Поведение при аргументе типа null зависит от conversion.
Возвращает:
Массив символов, содержащий считанный из консоли пароль или парольную фразу без символов завершения строки, или null, если достигнут конец потока.
Выбрасывает:
IllegalFormatException — если строка формата содержит недопустимый синтаксис, спецификатор формата, несовместимый с заданными аргументами, недостаточное количество аргументов для строки формата или другие недопустимые условия. Описание всех возможных ошибок форматирования см. в разделе Details спецификации класса formatter.
IOError — если произошла ошибка ввода-вывода.

readPassword

public char[] readPassword(Locale locale, String format, Object... args)
Выводит форматированную подсказку с использованием указанного locale, а затем считывает пароль или парольную фразу из консоли с отключённым отображением вводимых символов.
Параметры:
locale — локаль, применяемая при форматировании. Если locale — null, локализация не применяется.
format — строка формата для текста подсказки, описанная в разделе Format string syntax.
args — аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Число аргументов переменно и может быть равно нулю. Максимальное число аргументов ограничено максимальным размером массива Java, определённым в Спецификации виртуальной машины Java. Поведение при аргументе null зависит от conversion.
Возвращает:
массив символов, содержащий считанный из консоли пароль или парольную фразу, без символов окончания строки, либо null, если достигнут конец потока.
Выбрасывает:
IllegalFormatException — если строка формата содержит недопустимый синтаксис, спецификатор формата, несовместимый с заданными аргументами, недостаточное для строки формата число аргументов или другие недопустимые условия. Описание всех возможных ошибок форматирования см. в разделе Details спецификации класса форматировщика.
IOError — если возникает ошибка ввода-вывода.
Начиная с:
23

readPassword

public char[] readPassword()
Считывает пароль или парольную фразу из консоли с отключённым отображением вводимых символов.
Возвращает:
массив символов, содержащий считанный из консоли пароль или парольную фразу, без символов окончания строки, либо null, если достигнут конец потока.
Выбрасывает:
IOError — если возникает ошибка ввода-вывода.

flush

public void flush()
Очищает буфер консоли и немедленно записывает все буферизованные выходные данные.
Определено в:
flush в интерфейсе Flushable

charset

public Charset charset()
Возвращает объект Charset, используемый для операций записи в этот Console.

Возвращённая кодировка используется для кодирования данных, отправляемых на устройство вывода (например, дисплей), и определяется средой хоста или пользователем. По умолчанию используется кодировка, основанная на stdout.encoding; она может отличаться от кодировки по умолчанию, возвращаемой методом Charset.defaultCharset().

Возвращает:
объект Charset, используемый для операций записи в этот Console
Начиная с:
17

isTerminal

public boolean isTerminal()
Возвращает true, если экземпляр Console является терминалом.

Этот метод всегда возвращает true, поскольку System.console() предоставляет экземпляр Console только в том случае, если стандартный ввод и вывод не перенаправлены, то есть при работе в интерактивном терминале.

Возвращает:
true, если экземпляр Console является терминалом
Начиная с:
22

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API