Потоки байтов в основном и широко используются в java 1.0 как для символьных, так и для байтовых потоков. После Java 1.0 он устарел, и потоки символов играют важную роль. т.е., например
BufferedReader получит персонажа из источника, а его конструктор выглядит так
BufferedReader (Читатель inputReader) ..
Здесь Reader является абстрактным классом, и одним из его конкретных классов является InputStreamReader, который преобразует байты в символы и принимает ввод с клавиатуры (System.in) ...
BufferedReader: содержит внутренний буфер, который будет читать символы из потока. Внутренний счетчик отслеживает следующий символ, который будет передан в буфер через read (). InputStreamReader принимает входные данные в байтах и внутренне преобразует их в символы.