程序代码如下:
----------------------------------------
import java.io.*;public class RandomTester 
{

public static void main(String[] args)throws IOException
{
RandomAccessFile rf=new RandomAccessFile("d:\\tester.dat","rw");
for(int i=0;i<10;i++)
rf.write(i*1000);
rf.seek(5*8);
rf.writeLong(1234);

rf.seek(0);
for(int i=0;i<10;i++)
System.out.println("value"+i+":"+rf.readLong());

rf.close();
}}------------------------------------------------------------------------本程序是先按照“rw”访问模式打开d:\\tester.dat文件,如果不存在,则RandomAccessFile的构造方法会创建该文件。接下来向文件中写入10个long数据,每个long数据占8字节。rf.seek(5*8)方法跳过5个long数据。rf.writeLong(1234)方法覆盖原来的第六个元素,并改为1234。rf.seek(0)把指针又重新定义到开头位置。接着for循环用来读取所有的long数据。但是我在运行的时候发现,并没有出现预期的结果,显示value0~value9的所有值,而是只显示了6了。请大家看我的运行结果,并且给我指明一下是那里出的问题。谢谢各位了。我的运行结果如下:------------------------
value0:65531685982728280
value1:4622945017495814144
value2:0
value3:0
value4:0
value5:1234
Exception in thread "main" java.io.EOFException
at java.io.RandomAccessFile.readInt(Unknown Source)
at java.io.RandomAccessFile.readLong(Unknown Source)
at RandomTester.main(RandomTester.java:17)----------------------------
预期的运行结果应该如下:
-------------value0:0
value1:1000
value2:2000
value3:3000
value4:4000
value5:1234
value6:6000
value7:7000
value8:8000
value9:9000