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

标签 java inputstream

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

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

最佳答案

InputStream 读取时,the read method不返回 byte;它返回一个 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 中是有符号的,但这在这里并不重要,因为读取的字节被转换为可以存储大于 127 的值的 int。这也意味着 到达流末尾的 -1 不会与从流中读取的值 255 混淆。

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

关于java - Java 中文件结尾和字节值 -1 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56760137/

相关文章:

java - 如何禁用 Eclipse (3.3.2) 警告 : Access to enclosing constructor. .. 由合成访问器方法模拟

java - 使用 spring 模板的 pom.xml 中的 Maven 错误

java从SequenceInputStream读取内容问题

JavaIO : Reading a file that is still being written

c++ - 从包含特定字符串的行开始读取

java - 如何在 Java 中向进程发送密码

java - 如何使用对象作为类的变量,如ArrayList?

java - 如何禁用继承的logback?

c++ - 异常处理和打开文件?

java - 如何使用文件 channel 作为参数来写入对象