Класс 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, связанный с этой консолью. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли другой объект этому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определенного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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
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
© 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.