import java.io.IOException;
import java.io.File;
import java.io.RandomAccessFile;
class RandomFileTest
{
public static void main(String[] args) throws Exception
{
Student s1=new Student(1, "zhangsan", 90.5);
Student s2=new Student(2, "lisi", 98.5);
Student s3=new Student(3, "wangwu", 96.5);File userDir=new File(System.getProperties().getProperty("user.dir"));
File tempFile=File.createTempFile("~student", ".tmp", userDir);
tempFile.deleteOnExit();RandomAccessFile raf=new RandomAccessFile(tempFile, "rw");
s1.write(raf);
s2.write(raf);
s3.write(raf);
raf.seek(0);
Student s=new Student();
for(long i=0;i<raf.length();i=raf.getFilePointer())
{
s.read(raf);
System.out.println("[lenth:"+raf.length()+",i="+i+"] " + s);
}
raf.close();
Thread.sleep(5000);
}
}class Student
{
int num;
String name;
double score;
public Student()
{
}
public Student(int num, String name, double score)
{
this.num=num;
this.name=name;
this.score=score;
}
public void write(RandomAccessFile raf) throws IOException
{
raf.writeInt(num);
raf.writeUTF(name);
raf.writeDouble(score);
}
public void read(RandomAccessFile raf) throws IOException
{
num=raf.readInt();
name=raf.readUTF();
score=raf.readDouble();
}
public String toString()
{
return "num="+num+",name="+name+",score="+score;
}
}

解决方案 »

  1.   

    代码的执行顺序~还有这些~
    File userDir=new File(System.getProperties().getProperty("user.dir"));
    File tempFile=File.createTempFile("~student", ".tmp", userDir);
    tempFile.deleteOnExit();谢谢了  刚才太急了  给忘了说问题了 不好意思啊
      

  2.   

    //System.getProperties()这是获得当前的系统属性列表
    // System.getProperties().getProperty("user.dir")
    // 这是在属性列表中找出“user.dir”并返回一个字符串类型
    // 并通过将字符串转换为抽象路径名来创建一个新 File 实例
    File userDir = new File(System.getProperties().getProperty("user.dir"));
    //用上面得到的抽象的路径名创建一个新的空文件
    // 使用"~student"为的前缀和".tmp"为后缀字符串生成其名称。

    File tempFile = File.createTempFile("~student", ".tmp", userDir);
    // 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。 文件(或目录)将以与注册相反的顺序删除。
    // 调用此方法删除已注册为删除的文件或目录无效。根据 Java 语言规范中的定义,
    // 只有在虚拟机正常终止时,才会尝试执行删除操作。
    tempFile.deleteOnExit();