文件data.dat 以一个long型的数值开始。该数值是data.dat文件中另一个int型数值相对于当前文件指针的偏移量。编写一个java程序,使用RandomAccessFile,将该int型数值读出并打印输出。

解决方案 »

  1.   

    FILE* fp = fopen(...);long longData;
    fread(&longData, sizeof(long), 1, fp); // 读取long型数据int currentLocation = ftell(fp); // 取得当前的文件指针位置(可以用,也可以不用,用SEEK_CUR)
    fseek(fp, (long)longData, SEEK_CUR); // 偏移文件指针与当前的距离是longData.int intData;
    fread(&intData, sizeof(int), 1, fp); // 读取int型数据.这个是C的,但理论上是一样的,改成Java就行了.
      

  2.   

    RandomAccessFile raf = new RandomAccessFile(fileName, "r");long longData = raf.readLong();
    raf.skipBytes(longData); // 相对于当前文件指针位置,偏移longData个字节.int intData = raf.readInt();
      

  3.   

    public static void main(String[] args) throws IOException{
            RandomAccessFile file = new RandomAccessFile("file path", "rw");
            long l = file.readLong();
            file.seek(l);
            int i = file.readInt();
            System.out.println(i);
        }
      

  4.   

    或者用getFilePointer(), Returns the current offset in this file.raf.seek(raf.getgetFilePointer() + longData);来指定文件指针位置,这个是相对于文件开始处的位置.
    用这个来代替raf.skipBytes(longData).