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

Difference between the end of file and a byte value of -1 in Java?

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

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

InputStream 读取时,the read method 不会 return 读取 byte;它 return 是 int.

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.

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

获得值后,您始终可以将 int 转换为 byte 以获得 -128 到 127 范围内的字节,这会将 255 转换为 -1。