为什么OutputStreams和InputStreams接受并返回表示字节值的整型数?



InputStream的所有子类返回一个表示所读字节值的int。对于所有OutputStream子类都是一样的,它们将int作为write方法的参数,而不是byte

两个问题:

1-为什么?

2-如果我想把字节10110101写入输出流,我怎么能在将其传递到write之前将其编程转换为int ?同样,当我从输入流接收int时,我如何将其转换为byte ?

InputStream.read()返回int,因为这是区分有效数据(0..255范围内的值)和文件结束(-1)的简单方法。

OutputStream.write()接受一个int,否则你必须转换InputStream.read()的值。

如果byte在-128…-1并希望将其转换为范围128..的int。255,你使用掩码:

byte b = (byte)0xCD;
int i = b & 0xFF;

因为他们需要为EOS返回-1。作为一个副作用,这会导致返回无符号值(即使字节在Java中是有符号的)。

最新更新