文件结尾与Java中的-1字节值之间的区别?

时间:2019-06-25 18:34:18

标签: java inputstream

在Java中,字节是带符号的(-128至127),这意味着输入流可以读取-1而不会到达文件末尾。

那么程序员如何知道输入流返回的-1是表示文件末尾还是实际的字节值-1?

1 个答案:

答案 0 :(得分:5)

InputStream读取时,the read method不会返回byte;它返回一个int

  

值字节以int0的范围内的255返回。如果由于已到达流的末尾而没有字节可用,则返回值-1

即使字节是用Java签名的,在这里也没关系,因为读取的字节被转换为int,可以存储大于127的值。这也意味着-1用于到达流的末尾不会与从流中读取的255值混淆。

一旦有了该值,就可以始终将int强制转换为byte,以获得-128到127范围内的字节,这会将255转换为-1。