Если у меня есть следующий файл примера, где каждое число представляет байт (123 имеет байты 1, 2 и 3):
123456789
Допустим, я создаю FileInputStream. Это читает в двоичном байт за байтом. Итак, .read () возвращает 1, затем 2 и т. Д. Теперь, допустим, я создал буфер. Начальный блок, который он читает (если я правильно понимаю буферы), равен 1-5. Это позволяет ему читать не только побайтно, но и в случае целых строк символов и т. Д. Но если я снова нажму .read (), я начну с 6, а НЕ с того места, где остановился BufferedReader (так что если 3 является разрыв строки, и я велел BufferedReader напечатать первую строку, он печатает 1-2, а затем использование .read () из FileInputStream дает мне 6, а не 3.)
Чтобы иметь возможность анализировать данные по разделителю, сканер неявно создает буфер, например, как BufferedReader создает буфер, чтобы он мог находить разрывы строк и т. Д.? И если я передам отдельный FileInputStream в сканер, использование .read () НЕ будет печатать первый байт после первого разделителя, найденного сканером, а скорее в конце «порции», которую занял сканер?