Разница между концом файла и байтовым значением -1 в Java? - PullRequest
4 голосов
/ 25 июня 2019

В java байты подписаны (от -128 до 127), это означает, что входной поток может прочитать -1, не достигнув конца файла.

Так как бы программист узнал, указывает ли -1, возвращаемый входным потоком, конец файла или фактическое значение байта -1?

1 Ответ

5 голосов
/ 25 июня 2019

При чтении из InputStream, метод read не возвращает byte;он возвращает int.

Байт значения возвращается как int в диапазоне от 0 до 255.Если байт недоступен из-за того, что достигнут конец потока, возвращается значение -1.

Даже если байты подписаны в Java, здесь это не имеет значения, поскольку байтзначение чтения преобразуется в int, в котором могут храниться значения выше 127. Это также означает, что -1 для достижения конца потока не будет перепутано со значением 255, считываемым из потока.

Если у вас есть значение, вы всегда можете привести int к byte, чтобы получить байт в диапазоне от -128 до 127, который преобразует 255 в -1.

...