Класс Console
- Все реализуемые интерфейсы:
Flushable
public sealed class Console extends Object implements Flushable
Наличие консоли у виртуальной машины зависит от платформы, а также от способа запуска виртуальной машины. Если виртуальная машина запущена из интерактивной командной строки без перенаправления стандартных потоков ввода и вывода, то консоль будет доступна и обычно будет связана с клавиатурой и дисплеем, с которых была запущена виртуальная машина. Если виртуальная машина запускается автоматически, например планировщиком фоновых заданий, то у нее может не быть консоли.
Если у этой виртуальной машины есть консоль, она представлена единственным экземпляром этого класса, который можно получить, вызвав метод 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 |
Записывает форматированную строку в выходной поток этой консоли, используя указанную строку формата и аргументы с default format locale. |
Console |
format |
Записывает форматированную строку в выходной поток этой консоли, используя указанную строку формата и аргументы с указанной locale. |
boolean |
isTerminal() |
Возвращает true, если экземпляр Console является терминалом. |
Console |
printf |
Удобный метод для записи форматированной строки в выходной поток этой консоли с использованием указанной строки формата и аргументов с default format locale. |
Console |
printf |
Удобный метод для записи форматированной строки в выходной поток этой консоли с использованием указанной строки формата и аргументов с указанной locale. |
Reader |
reader() |
Получает единственный объект Reader, связанный с этой консолью. |
String |
readLine() |
Считывает одну строку текста из консоли. |
String |
readLine |
Выводит форматированное приглашение с использованием default format locale, а затем считывает одну строку текста из консоли. |
String |
readLine |
Выводит форматированное приглашение с использованием указанной locale, а затем считывает одну строку текста из консоли. |
char[] |
readPassword() |
Считывает пароль или парольную фразу из консоли с отключенным отображением вводимых символов. |
char[] |
readPassword |
Выводит форматированное приглашение с использованием default format locale, а затем считывает пароль или парольную фразу из консоли с отключенным отображением вводимых символов. |
char[] |
readPassword |
Выводит форматированное приглашение с использованием указанной locale, а затем считывает пароль или парольную фразу из консоли с отключенным отображением вводимых символов. |
PrintWriter |
writer() |
Получает единственный объект PrintWriter, связанный с этой консолью. |
Подробное описание методов
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спецификации класса formatter. -
IOError— если произошла ошибка ввода-вывода. - Начиная с:
- 23
readPassword
public char[] readPassword()
- Возвращает:
- Массив символов, содержащий считанный из консоли пароль или парольную фразу без символов завершения строки, или
null, если достигнут конец потока. - Выбрасывает:
-
IOError— если произошла ошибка ввода-вывода.
flush
charset
public Charset charset()
Charset, используемый для операций записи в этой Console. Возвращенный набор символов используется для кодирования данных, отправляемых на устройство вывода (например, дисплей), и задается средой хоста или пользователем. По умолчанию используется набор символов на основе stdout.encoding; он не обязательно совпадает с набором символов по умолчанию, возвращаемым методом Charset.defaultCharset().
- Возвращает:
- объект
Charset, используемый для операций записи в этойConsole - Начиная с:
- 17
isTerminal
public boolean isTerminal()
true, если экземпляр Console является терминалом. Этот метод возвращает true, если устройство консоли, связанное с текущей виртуальной машиной Java, является терминалом — обычно интерактивной командной строкой, подключенной к клавиатуре и дисплею.
- Примечание по реализации:
- Реализация по умолчанию возвращает значение, эквивалентное вызову
isatty(stdin/stdout)на POSIX-платформах, или проверяет, являются ли стандартные файловые дескрипторы ввода/вывода символьными устройствами в Windows. - Возвращает:
-
true, если экземплярConsoleявляется терминалом - Начиная с:
- 22
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/Console.html