0

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

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

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

这是我addStudentGroup课堂上将学生添加到已创建组的链表中的方法。

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.");

    } 
}

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

4

2 回答 2

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");
}
于 2013-04-09T09:12:41.357 回答
0

您不能从 a 中删除任何内容,RandomAccessFile除非通过实现您的代码可以理解的一些文件协议,例如用空值填充记录,假设您的文件有记录,并假设全空值(或其他)不是合法的记录值。或者在每条记录上实现一个字节头,这样 1 表示存在,0 表示已删除,反之亦然。

于 2013-04-09T09:50:17.263 回答