При чтении из InputStream
, метод read
не возвращает byte
;он возвращает int
.
Байт значения возвращается как int
в диапазоне от 0
до 255
.Если байт недоступен из-за того, что достигнут конец потока, возвращается значение -1
.
Даже если байты подписаны в Java, здесь это не имеет значения, поскольку байтзначение чтения преобразуется в int
, в котором могут храниться значения выше 127. Это также означает, что -1
для достижения конца потока не будет перепутано со значением 255, считываемым из потока.
Если у вас есть значение, вы всегда можете привести int
к byte
, чтобы получить байт в диапазоне от -128 до 127, который преобразует 255 в -1.