解决方案 »

  1.   

    你自己不会看API文档说明吗。。
    in.read()返回的是int值,范围在-1~255,返回-1表示文件结束,其他的表示文件数据,当读入的是负数时,转换为其无符号类型对应的正数,-1对应的是0xFF,也就是255
    而raf.read(buf)直接读入buf数组,buf数组是byte类型的,而byte的范围是-128~127,当然能直接表示-1
      

  2.   

    +1其实单纯一个字节本身没所谓正负,只是8个bit。8个电子/磁/光....的256种组合,你管他叫第256个字节(1开始数,第一个是0/NUL/'\0'/ 随便你叫什么....),-1也好,0xFF也好,都只代表8个bit1。只不过在Java IO处理的时候,使用了非负的int
    也就是int 0,代表第一个(8个0bit),int 255,代表最后一个(8个1bit)。而-1特殊含义,不表示任何字节,只表示文件结束。