在Java中,字节是带符号的(-128至127),这意味着输入流可以读取-1而不会到达文件末尾。
那么程序员如何知道输入流返回的-1是表示文件末尾还是实际的字节值-1?
答案 0 :(得分:5)
从InputStream
读取时,the read
method不会返回byte
;它返回一个int
。
值字节以
int
到0
的范围内的255
返回。如果由于已到达流的末尾而没有字节可用,则返回值-1
。
即使字节是用Java签名的,在这里也没关系,因为读取的字节被转换为int
,可以存储大于127的值。这也意味着-1
用于到达流的末尾不会与从流中读取的255值混淆。
一旦有了该值,就可以始终将int
强制转换为byte
,以获得-128到127范围内的字节,这会将255转换为-1。