文件data.dat 以一个long型的数值开始。该数值是data.dat文件中另一个int型数值相对于当前文件指针的偏移量。编写一个java程序,使用RandomAccessFile,将该int型数值读出并打印输出。
------解决方案--------------------
readLong,然后seek,然后readInt
------解决方案--------------------
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就行了.
------解决方案--------------------
RandomAccessFile raf = new RandomAccessFile(fileName, "r ");
long longData = raf.readLong();
raf.skipBytes(longData); // 相对于当前文件指针位置,偏移longData个字节.
int intData = raf.readInt();
------解决方案--------------------
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);
}
------解决方案--------------------
或者用getFilePointer(), Returns the current offset in this file.
raf.seek(raf.getgetFilePointer() + longData);来指定文件指针位置,这个是相对于文件开始处的位置.
用这个来代替raf.skipBytes(longData).