结合老师的视频和我的理解如下:
按理read()方法应该返回所读到的字节,但它返回了int类型。这是因为它在内部做了强制的转换,将一个8位的二进制数转化为32位的二进制的数。这样可以避免一种情况:假如当我们所读到第一个字节为8个1即1111111,实际上它代表-1,而32为的int类型代表32个1,但它并不代表文件内容已经读取完,如果不做处理,将无法读取文件内容。所以我们就必须把它和255(255是32位的二进制,低八位为1,高24位为0)相与,取出低八位的1。获得的结果为32位的255,这样read返回的32就不是-1.从而就避免了这种情况,保证了数据的正确读取。在write()写操作时,是其在内部强制性的丢弃高24位,保留低8位,保证了数据的一致性。 |