Чтение консольного ввода
В Java 1.0 единственным способом выполнения консольного ввода было использование байтового потока, и существует большой объем старого кода, в котором применяется этот подход. Сегодня применение байтового потока для чтения консольного ввода по-прежнему технически возможно, но поступать так не рекомендуется. Предпочтительный метод чтения консольного ввода — это использовать символ-ориентированный поток, что значительно упрощает возможности интернационализации и поддержки разрабатываемых программ.
В Java консольный ввод выполняется чтением System, in. Чтобы получить символьный поток, присоединенный к консоли, вы должны поместить System, in в оболочку объекта Buf f eredReader. Buf f eredReader поддерживает буферизованный входной поток. Наиболее часто используемый его конструктор выглядит так:
BufferedReader(Reader inputReader)
Здесь inputReader — это поток, который связывается с создаваемым экземпляром BufferedReader. Reader — абстрактный класс. Одним из его конкретных наследников является InputStreamReader, который преобразует байты в символы. Для получения объекта InputStreamReader, который присоединен к System, in, служит следующий конструктор:
InputStreamReader(InputStream inputStream)
Поскольку System, in ссылается на объект типа InputStream, он должен быть использован как параметр InputStream. Собрав все вместе, получим следующую строку кода, которая создает Buf feredReader, соединенный с клавиатурой:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
После выполнения этого оператора br представляет собой основанный на символах поток, подключенный к консоли через System, in.