如何从随机访问文件中删除记录?

我想知道如何从随机访问文件中删除记录。

这是我如何添加到我的RAF,不知道如何删除它:X

public void addNewStudent(String name, String formClass, String emailAddress, String country1, String country2, String universityChoice) { try { RandomAccessFile theFile = new RandomAccessFile("studentData.dat","rw"); long records = (theFile.length()+299)/300; //Number of records if(theFile.length()>0) //Check if the file is empty or not { for(long x=0;x<records;x++) { theFile.seek(x*300); String currentName = theFile.readUTF(); if(name.equalsIgnoreCase(currentName)) //Check if student exists in database { output("This student exist already"); //Output this if exists } else // or else write a new record { theFile.seek(records*300); theFile.writeUTF(name); //Write student name theFile.seek((records*300)+50); theFile.writeUTF(formClass); //Writes students' form class theFile.seek((records*300)+60); theFile.writeUTF(emailAddress); //Writes students' email theFile.seek((records*300)+100); theFile.writeUTF(country1); //Writes students' country choice #1 theFile.seek((records*300)+140); theFile.writeUTF(country2); //Writes students' country choice #2 theFile.seek((records*300)+180); theFile.writeUTF(universityChoice); //Writes students' university choices students.add(name,formClass,emailAddress,country1,country2,universityChoice); } } } else //If the file isn't empty, then just write { theFile.seek(records*300); theFile.writeUTF(name); //Write student name theFile.seek((records*300)+50); theFile.writeUTF(formClass); //Writes students' form class theFile.seek((records*300)+60); theFile.writeUTF(emailAddress); //Writes students' email theFile.seek((records*300)+100); theFile.writeUTF(country1); //Writes students' country choice #1 theFile.seek((records*300)+140); theFile.writeUTF(country2); //Writes students' country choice #2 theFile.seek((records*300)+180); theFile.writeUTF(universityChoice); //Writes students' university choices students.add(name,formClass,emailAddress,country1,country2,universityChoice); } } catch(IOException e) { output("Error while adding new student"); } } 

我会删除一个标志,如果它的设置,请不要读取它。

最佳方法:创建删除对话框方法。 让该方法将空白记录写入文件。 如果您的构造函数设置正确,则创建空白记录很容易。

当空白记录被写为一系列零和空值时,如果您的程序设置为仅显示具有适当值的记录,则它不会显示任何具有0 / null值的记录。