说一种方法读取数据字节是什么意思



我正在通过java.io.RandomAccessFile类的Oracle API。

在类中有一个方法称为read(),该方法从文件传递给构造函数的文件中读取数据字节: -

public int read() 投掷ioexception

读取来自此文件的数据字节。字节被返回 整数在0到255(0x00-0x0ff)范围内。如果没有,此方法会阻止 输入尚未可用。

尽管RandomAccessfile不是Inputstream的子类,但 方法的行为与inputstream.read()完全相同 inputstream的方法。

返回: 下一个数据字节,或-1如果已达到文件的末尾。扔: IOException-如果发生I/O错误。如果达到文件终止,则不会扔掉。

我很困惑,是否意味着它读取传递给构造函数的文件中的8位数据并将读取内容转换为int。

有什么建议?

到底是什么让你感到困惑?

是的,它读取一个数据字节,即8位,并将其返回为整数值0..255。因此,如果所讨论的文件恰好是文本文件,并且第一个字符是资本" A",则read()将返回65。

它返回int,而不是byte,以便它可以返回全范围0..255作为正数,并且仍然有-1可作为文件结束的前哨值可用(尽管可以说是例外是这样做的更好方法)。

java没有无符号类型。一个字节通常被解释为未签名时,是[0..255]范围内的整数。read()还使用-1表示错误。因此,您需要至少具有257个不同值的类型。Java int类型是32位签名的整数。因此,该文档说的是,它是传递字节读取的8位无符号值或错误指示器,并且通过32位签名的返回类型作为容器。

最新更新