Класс Console
- java.lang.Object
-
- java.io.Console
- Все реализованные интерфейсы:
Flushable
public final class Console extends Object implements Flushable
Методы для доступа к консоли символьного устройства, если таковая имеется, связанной с текущей виртуальной машиной Java.
Наличие консоли в виртуальной машине зависит от базовой платформы и способа запуска виртуальной машины. Если виртуальная машина запускается из интерактивной командной строки без перенаправления потоков стандартного ввода и вывода, то у неё существует консоль, обычно подключенная к клавиатуре и дисплею, с которых запущена виртуальная машина. Если виртуальная машина запускается автоматически, например, планировщиком фоновых задач, то у неё, как правило, нет консоли.
Если у этой виртуальной машины есть консоль, то она представлена единственным экземпляром этого класса, который можно получить, вызвав метод System.console(). Если устройство консоли недоступно, то вызов этого метода вернёт null.
Операции чтения и записи синхронизированы для обеспечения атомарного завершения критических операций; поэтому вызов методов readLine(), readPassword(), format(), printf(), а также операции чтения, форматирования и записи над объектами, возвращаемыми reader() и writer(), могут заблокироваться в многопоточных сценариях.
Вызов 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
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | flush() | Очищает консоль и принудительно записывает в выходной поток все буферизованные данные. |
Console | format(String fmt,
Object... args) | Записывает отформатированную строку в выходной поток этой консоли, используя указанную строку формата и аргументы. |
Console | printf(String format,
Object... args) | Удобный метод для записи отформатированной строки в выходной поток этой консоли, используя указанную строку формата и аргументы. |
Reader | reader() | Возвращает уникальный объект |
String | readLine() | Читает одну строку текста из консоли. |
String | readLine(String fmt,
Object... args) | Предоставляет отформатированный запрос, затем считывает одну строку текста из консоли. |
char[] | readPassword() | Читает пароль или фразу из консоли без отображения ввода. |
char[] | readPassword(String fmt,
Object... args) | Предоставляет отформатированный запрос, затем считывает пароль или фразу из консоли без отображения ввода. |
PrintWriter | writer() | Возвращает уникальный объект |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Методы
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(java.lang.String, java.lang.Object...).
Массовые операции чтения read(char[]) , read(char[], int, int) и read(java.nio.CharBuffer) над возвращенным объектом не будут читать символы, выходящие за пределы строки для каждого вызова, даже если буфер назначения имеет место для большего количества символов. Методы Reader могут заблокироваться, если граница строки не введена или не достигнута на устройстве ввода консоли. Граница строки считается любой из: символом новой строки ('\n'), символом возврата каретки ('\r'), символом возврата каретки, за которым сразу следует символ новой строки, или концом потока.
- Возвращает:
- Объект reader, связанный с этим консольным окном
format
public Console format(String fmt,
Object... args) Записывает отформатированную строку в выходной поток этого консольного окна, используя указанную строку формата и аргументы.
- Параметры:
-
fmt- Строка формата, как описано в Синтаксис строки формата -
args- Аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов переменное и может быть нулевым. Максимальное количество аргументов ограничено максимальным размером массива Java, определённым в Спецификации виртуальной машины Java. Поведение сnullаргументом зависит от преобразования. - Возвращает:
- Это консольное окно
- Исключения:
-
IllegalFormatException- Если строка формата содержит неверный синтаксис, спецификатор формата несовместим с заданными аргументами, недостаточно аргументов для строки формата или другие недопустимые условия. Для описания всех возможных ошибок форматирования см. раздел Подробное описание спецификации класса formatter.
printf
public Console printf(String format,
Object... args) Удобный метод для записи отформатированной строки в выходной поток этого консольного окна, используя указанную строку формата и аргументы.
Вызов этого метода в виде con.printf(format, args) ведет себя точно так же, как вызов
con.format(format, args).
- Параметры:
-
format- Строка формата, как описано в Синтаксис строки формата. -
args- Аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Количество аргументов переменное и может быть нулевым. Максимальное количество аргументов ограничено максимальным размером массива Java, определённым в Спецификации виртуальной машины Java. Поведение сnullаргументом зависит от преобразования. - Возвращает:
- Это консольное окно
- Исключения:
-
IllegalFormatException- Если строка формата содержит неверный синтаксис, спецификатор формата несовместим с заданными аргументами, недостаточно аргументов для строки формата или другие недопустимые условия. Для описания всех возможных ошибок форматирования см. раздел Подробное описание спецификации класса formatter.
readLine
public String readLine(String fmt,
Object... args) Предоставляет отформатированный запрос, затем считывает одну строку текста из консоли.
- Параметры:
-
fmt- Строка формата, как описано в Синтаксис строки формата. -
args- Аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Максимальное количество аргументов ограничено максимальным размером массива Java, определённым в Спецификации виртуальной машины Java. - Возвращает:
- Строка, содержащая прочитанную строку из консоли, не включающая символы завершения строки, или
nullесли достигнут конец потока. - Исключения:
-
IllegalFormatException- Если строка формата содержит неверный синтаксис, спецификатор формата несовместим с заданными аргументами, недостаточно аргументов для строки формата или другие недопустимые условия. Для описания всех возможных ошибок форматирования см. раздел Подробное описание спецификации класса formatter. -
IOError- Если произошла ошибка ввода-вывода.
readLine
public String readLine()
Считывает одну строку текста из консоли.
- Возвращает:
- Строка, содержащая прочитанную строку из консоли, не включающая символы завершения строки, или
nullесли достигнут конец потока. - Исключения:
-
IOError- Если произошла ошибка ввода-вывода.
readPassword
public char[] readPassword(String fmt,
Object... args) Предоставляет отформатированный запрос, затем считывает пароль или пароль доступа из консоли без отображения введенных символов.
- Параметры:
-
fmt- Строка формата, как описано в Синтаксис строки формата для текста запроса. -
args- Аргументы, на которые ссылаются спецификаторы формата в строке формата. Если аргументов больше, чем спецификаторов формата, лишние аргументы игнорируются. Максимальное количество аргументов ограничено максимальным размером массива Java, определённым в Спецификации виртуальной машины Java. - Возвращает:
- Массив символов, содержащий пароль или пароль доступа, прочитанный с консоли, не включая символы завершения строки, или
nullесли достигнут конец потока. - Исключения:
-
IllegalFormatException- Если строка формата содержит неверный синтаксис, спецификатор формата несовместим с заданными аргументами, недостаточно аргументов для строки формата или другие недопустимые условия. Для описания всех возможных ошибок форматирования см. раздел Подробное описание спецификации класса formatter. -
IOError- Если произошла ошибка ввода-вывода.
readPassword
public char[] readPassword()
Считывает пароль или пароль доступа с консоли без отображения введенных символов.
- Возвращает:
- Массив символов, содержащий пароль или пароль доступа, прочитанный с консоли, не включая символы завершения строки, или
nullесли достигнут конец потока. - Исключения:
-
IOError- Если произошла ошибка ввода-вывода.
flush
public void flush()
Очищает консоль и заставляет все буферизованные данные вывода быть записанными немедленно.
© 1993, 2020, 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/11/docs/api/java.base/java/io/Console.html