代码不贴了,很简单。使用这个类RandomAccessFile,向文件写入两个整数100和200,写入没有问题。读取也没有问题。只有一点不解,使用raf.seek(0)或者是raf.seek(4),可以读出100以及200。但是raf.seek(1)、raf.seek(2)、raf.seek(3)就读取出很多的数字。比如设置raf.seek(1)后,在读取出来的值就是:25600。使用skipBytes也是一样。这是为什么?麻烦详细点,不要复制JDK API。我都看过才来问的。顺便解释一下seek与skipByte他们之间的却别!

解决方案 »

  1.   

    1)seek 是直接跳到文件的指定位置,与当前位置无关;
    2)skipByte 是在当前位置的基础上再跳过指定字节数;
    3) 你的文件应该像这样的(用16进制编辑器):
    00 00 00 64 00 00 00 C800 00 00 64=100 ; 00 00 00 C8=200;  高位在前
    seek(1) 读到的就是 00 00 64 00 = 25600
      

  2.   

    raf.seek(0)读第一个数(显而易见)
    raf.seek(4)读第二个数(整数写入时是4个字节,往后走4字节所以能读到正确的)
    假如是raf.seek(1)或其他,如楼上解释
      

  3.   

    不会给你贴API的,因为你现在还不应该看API那么高深的东西,你现在应该看的是JAVA语言基础