楼上说的是对的,RandomAccessFile 随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引(通过试验代码可知道一个实例只有一个指针),称为文件指针;
这样就不难理解,第一次是调用 raf.skipBytes(12);这时指针指向第二个员工信息开始处,
然后开始for(int i=0;i<len;i++)
str=str+(char)raf.readByte();
System.out.println("name: "+str);
System.out.println("age:"+raf.readInt());
循环八次readByte(),又readInt().共十二个字节.
然后又调用seek将指针指向流的头部.
又读了十二个字节.这时指针指向了第二个信息的头部(加上12个字节就指向了第三个员工信息的头部)
总结:记住只有一个指针在操作,
另外,通过源码可以知到skipBytes()调用seek()方法,而seek方法被native修饰(属于JNI,这个应该是调用了计算机底层的硬件),read(),readLine(0都是被Native修饰的
上面的方法在调用时,知道指针随着变化就行了
多谢,不是你我也不会去看源码,也不会知道JNI这个词,哈哈 |