InputStream read(byte []) 方法如何将数据存储为字节?

How does the InputStream read(byte []) method store data as bytes?

字节码的范围从 0 到 256(-1 表示 EOF),但是 java 字节变量的范围从 -128 到 128。该方法如何能够存储来自代码到字节变量?

我不确定你有什么不清楚的:

  1. is.read(byte[]) 读取 8 位值的数组。这些值已签名(-128..127,而不是“128”))这一事实无关紧要。
  2. 它不需要像 EOF 那样存储一个 out of band 值。它只是在 EOF 处停止读取。数组的 .length 是缓冲区大小 and/or 在 EOF 之前成功读取的#/bytes。
    PS: 通常的做法是在调用 read() 之前查询文件大小并分配字节数组。