import java.io.File;
import java.io.RandomAccessFile;
public class FileDemo02
{
public static void main(String args[]) throws Exception
{
File f=new File("D:"+File.separator+"test.text");
RandomAccessFile rdf=null;
rdf=new RandomAccessFile(f,"r");
String name=null;
int age=0;
byte b[]=new byte[8];
rdf.skipBytes(12);
for(int i=0;i<b.length;i++)
{
b[i]=rdf.readByte();
}
name=new String(b);
age=rdf.readInt();
System.out.println("第二个人的信息-->姓名:"+name+":年龄:"+age);
rdf.seek(0);
b=new byte[8];
for(int i=0;i<b.length;i++)
{
b[i]=rdf.readByte();
}
name=new String(b);
age=rdf.readInt();
System.out.println("第一个人的信息-->姓名:"+name+":年龄:"+age);
rdf.skipBytes(24);
b=new byte[8];
for(int i=0;i<b.length;i++)
{
b[i]=rdf.readByte();
}
name=new String(b);
age=rdf.readInt();
System.out.println("第三个人的信息-->姓名:"+name+":年龄:"+age);
rdf.close();
}
}运行结果是:第二个人的信息-->姓名: lisi,  :年龄:538981169
第一个人的信息-->姓名:zhangsan:年龄:858795040
Exception in thread "main" java.io.EOFException
at java.io.RandomAccessFile.readByte(Unknown Source)
at FileDemo02.main(FileDemo02.java:34)
我不知道为什么会出现异常,我后面的代码是copy之前的。为什么前面不报错,后面就异常了,请高手指教。

解决方案 »

  1.   

    rdf.readByte()在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException不明白楼主为什么要这样写,随机读取内容啊
      

  2.   

    rdf读取数据后,读取指针都会往后移动,
    age=rdf.readInt();
    读取这行数据时已经到了文件尾部了,所以会报EOFException(end of file)异常。
    所以在读取数据前一定要判断是否已经到达文件尾部了。