С какой стати вы хотите использовать сканер для чтения файла побайтно? Это все равно, что использовать тачку для перевозки смены кармана. (Если вам действительно нужна тачка для смены кармана, дайте мне знать, чтобы я мог стать вашим другом).
А если серьезно: класс InputStream
читает байты из файла просто и надежно и больше ничего не делает.
Класс scanner
был недавно введен в API Java, поэтому примеры из учебников могут извлечь данные из файла с меньшими затратами, чем обычно при использовании каскада new BufferedReader(new InputStream)
. Его специальность - ввод чисел и строк из входных файлов произвольной формы. Метод nextByte()
фактически читает одну или несколько десятичных цифр из входного потока (если они там есть) и преобразует таким образом сканированное число в одно байтовое значение.
А если вы читаете байты, почему вы хотите вывести их как char
s? Байты являются , а не символами, и взаимное преобразование методом перебора в некоторых местах завершится неудачно. Если вы хотите увидеть значения этих байтов, выведите их как есть, и вы увидите маленькие целые числа от 0 до 255.
Если вы хотите прочитать char
s из файла, FileReader
- это класс для вас.