以前我刚学的时候做的方法是这样的,读取这个文件,写入到另一个文件中去,如果碰到要删除的那一条,就不写入,然后再删除原文件,对新文件改名.
现在一想,其实可以用RondomAccess这个类吧,现在我将我以前的代码发给你看下.
package tbn;
import
import
import
import
import
import java.util.Scanner;
/**
*
* @author dawn
* @version 1.0
* @since 1.0
*/
public class StudentInformationDelete extends RecordOperate {
public void delete() {
Scanner in = new Scanner(System.in);
String deleteID = new String();
System.out.println("请输入要删除的学号:");
deleteID = in.next();
if (findID(deleteID)) {
if (panDuan("是否删除;(yes/no)")) {
deleteRecord(deleteID);
}
} else {
System.out.println("找不到相应的ID");
}
}
/**
* 这个方法是判断字符串内容是否在存档是有相同的ID存在
*
* @param args
*
你要查找的字符串
* @return 如果找到则true,没有找到则false
*/
public boolean findID(String args) {
boolean bool = false;
String sth = "";
try {
BufferedReader read = new BufferedReader(new FileReader(
"StudentInformation"));
while ((sth = read.readLine()) != null) {
getStudentID(sth);
if (args.equals(RecordOperate.studentID)) {
bool = true;
cutRecord(sth);
format();
displayRecord();
break;
}
}
read.close();
} catch (Exception e) {
}
return bool;
}
/**
* 这个方法实面的功能是删除记录
*
* @param args
*
要删除记录的ID号
*/
public void deleteRecord(String args) {
String sth = "";
try {
BufferedReader read = new BufferedReader(new FileReader(
"StudentInformation"));// 新建一个读文件的对象,操作的是存档文件
BufferedWriter temp = new BufferedWriter(new FileWriter("tempfile",
true));// 新建一个新的写文件对象
while ((sth = read.readLine()) != null) {
getStudentID(sth);
if (args.equals(RecordOperate.studentID)) {
continue;// 这个断判的意思是:如果有一条记录的被拆解后的ID与传递来的参数相同,
// 则不继续下面的操作
}
temp.write(sth + "\r\n");// 将读出来的内容写入到临时文件中去
}
read.close();
temp.close();
(new File("StudentInformation")).delete();// 删除这个以前存储文件
File x = new File("StudentInformation");// 建立一个File对象
(new File("tempfile")).renameTo(x);// 将这个临时文件重命名为存储文件名
} catch (Exception e) {
}
}
}