我想在使用Java的文件中删除一行记录,例如在我的文件中
studentID studentName studentAddress studentPhoneNo AAA|AAA AAA | AAAAAAAAAAA | AAAAAAAAAAAA BBB|BBB BBB | BBBBBBBBBBB | BBBBBBBBBBBB CCC|CCC CCC | CCCCCCCCCCC | CCCCCCCCCCCC
我想要删除studentID = BBB以下是我从谷歌找到的代码:
try {
File inFile = new File(studentFile);
if (!inFile.isFile()) {
System.out.println("Parameter is not an existing file");
return;
}
// Construct the new file that will later be renamed to the original
// filename.
File tempFile = new File(inFile.getAbsolutePath() + ".tmp");
BufferedReader br = new BufferedReader(new FileReader(studentFile));
PrintWriter pw = new PrintWriter(new FileWriter(tempFile));
String line = null;
// Read from the original file and write to the new
// unless content matches data to be removed.
while ((line = br.readLine()) != null) {
if (!line.trim().contains(id)) {
pw.println(line);
pw.flush();
}
}
pw.close();
br.close();
// Delete the original file
if (!inFile.delete()) {
System.out.println("Could not delete file");
return;
}
// Rename the new file to the filename the original file had.
if (!tempFile.renameTo(inFile))
System.out.println("Could not rename file");
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
但我收到此错误无法删除文件。
答案 0 :(得分:3)
我刚测试了这个程序,它运行得非常好并且产生了预期的结果(在Windows上)。 所以问题不在于代码,它可能是一个权限问题?
但正如评论中所述,如果你只是假设你的字符串只能作为你文件中的“学生ID”找到,那就可以(并且会)导致错误。
正确的方法是阅读文件的内容,将其转换为学生列表(学生ID为字段的课程,以及其他字段,如果您需要),删除与学生的一个您不想要的ID,然后再次保存文件,其余列表序列化为您的特定格式。
答案 1 :(得分:1)
此代码没有问题,您无权从服务器删除该文件。还有一件事是,更改逻辑以找到匹配的行。