如何从RandomAccessFile中编写和删除对象?

时间:2013-04-09 09:00:28

标签: java file object methods randomaccessfile

我目前正在开展一项学校项目,我需要将其数据保存到RandomAccessFile。我认为这是迄今为止最有效的方式,但我必须这样做。注意:我必须使用RandomAccessFile类。

我理解如何将main方法中创建的简单stringsint保存到文件中,但是我无法将这些知识转移到我自己的程序中。

我有4个不同的类,即DatabaseGroupStudentRehearsalDatabase类允许您将组添加到组的链接列表中。然后,您可以为每个小组添加学生(见下文)以及排练日期(其剧院管理计划)。这些内容分别添加到linkedlist<Student>linkedlist<Rehearsal>

这是addStudent课程中的Group方法,可将学生添加到已创建的论坛的链接列表中。

public void addStudent(int id, String firstname, String lastname) throws IOException {
    Student newstudent = new Student(id, firstname, lastname);
    if (!Students.contains(newstudent)) {
        Students.add(newstudent);
} else 
        JOptionPane.showMessageDialog(null, "Student with ID " + id
                + " already exists in group!", "Error",
                JOptionPane.WARNING_MESSAGE);
}

如何让该方法在执行时自动将学生对象写入文件?

这是我的removeStudent方法:

public void removeStudent(int id) {
    if (!Students.remove(new Student(id, null, null))) {
        JOptionPane.showMessageDialog(null, "Student with ID[" + id
                + "] not present. System unchanged.");

    } 
}

几乎相同的问题,我怎样才能在执行方法时从文件中删除特定对象。如果你能帮我解决这个问题,那就太棒了:)。

2 个答案:

答案 0 :(得分:0)

以您希望写入文件的方式覆盖对象类的toString()方法!

然后使用foreachlinkedlist上循环,并在学生对象上调用toString()并写入文件

示例:

fileOutputStream outStream=newFileOutputStream("../RandomAccessFile");//path where you want to create file
foreach(Student s in linkedlist)
{
  outStream.println(s.toString()+"/n");
}

答案 1 :(得分:0)

除了通过实现代码理解的某些文件协议之外,你不能删除RandomAccessFile中的任何内容,例如用空值填充记录,假设你的文件有记录,并假设全空(或者其他) )不是合法的记录价值。或者在每条记录上实现一个字节标题,使得1表示存在,0表示删除,或反之亦然。