Actually read
returns an integer..
public abstract int read() throws IOException
so it's implictly casted to be unsigned byte by storing it in an int.
As stated in documentation:
Reads the next byte of data from the
input stream. The value byte is
returned as an int in the range 0 to
255. If no byte is available because the end of the stream has been
reached, the value -1 is returned.
Think about the fact that if it's a signed byte then -1
couldn't be used as end of stream value.
For OutputStream
you have
public abstract void write(int b) throws IOException
and as stated by documentation implementation will take 8 low order bits of the integer passed..
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…