En java, bytes son firmados (-128 a 127), esto significa un flujo de entrada puede leer un -1 sin llegar al final del archivo.
Entonces, ¿cómo sería un programador saber si el -1 devuelto por un flujo de entrada indica el final del fichero o un valor de byte real de -1?
Cuando se lee desde una InputStream
, el read
método no devuelve una byte
; devuelve una int
.
El byte de valor se devuelve como
int
en el rango0
de255
. Si no hay byte está disponible debido a que el final de la secuencia se ha alcanzado, el valor-1
se devuelve.
A pesar de que se firman bytes en Java, que no importa aquí, porque el byte que se lee se convierte en una int
que puede almacenar valores superiores a 127. También significa que -1
para llegar a la final de la secuencia no se confunden con una valor de 255 que se lee de la corriente.
Una vez que tenga el valor, siempre se puede emitir el int
a una byte
para conseguir un byte en el rango de -128 a 127, lo que convertiría a los 255 en -1.