我目前正在开展一项学校项目,我需要将其数据保存到RandomAccessFile
。我认为这是迄今为止最有效的方式,但我必须这样做。注意:我必须使用RandomAccessFile类。
我理解如何将main方法中创建的简单strings
和int
保存到文件中,但是我无法将这些知识转移到我自己的程序中。
我有4个不同的类,即Database
,Group
,Student
,Rehearsal
。 Database
类允许您将组添加到组的链接列表中。然后,您可以为每个小组添加学生(见下文)以及排练日期(其剧院管理计划)。这些内容分别添加到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.");
}
}
几乎相同的问题,我怎样才能在执行方法时从文件中删除特定对象。如果你能帮我解决这个问题,那就太棒了:)。
答案 0 :(得分:0)
以您希望写入文件的方式覆盖对象类的toString()
方法!
然后使用foreach
在linkedlist
上循环,并在学生对象上调用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表示删除,或反之亦然。