Чтение символов

Для чтения символа из BufferedReader применяется read (). Ниже показана версия read (), которая будет использоваться:

int read() throws IOException

Каждый раз, когда вызывается метод read (), он читает символ из входного потока и возвращает его как целое значение. При достижении конца потока возвращается -1. Как видите, метод может возбудить исключение IOException.

В следующей программе демонстрируется применение read О, читая символы с консоли до тех пор, пока не пользователь не введет "q". Обратите внимание, что любые исключения ввода-вывода, которые могут быть сгенерированы, просто передаются в main (). Такой подход распространен при чтении с консоли, но при желании вы можете обработать ошибки такого рода самостоятельно.

// Использование BufferedReader для чтения символов с консоли.
import java.io.*;
class BRRead {
public static void main(String args[]) throws IOException {
char c;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println ("Вводите символы, 'q' — для выхода.");
// читать символы do {
с = (char) br.readO; System.out.println(c);
}
while(c != 'q';
}
}

Ниже показан пример запуска этой программы:

Вводите символы, 'q' — для выхода.
123abcq
1
2
3
а
b
с
q

Этот вывод может выглядеть немного не так, как вы ожидали, потому что System, in является строчно-буферизованным по умолчанию. Это значит, что никакого ввода в действительности программе не передается до тех пор, пока не будет нажата клавиша . Как можно предположить, это делает read () лишь отчасти применимым для интерактивного консольного ввода.