所以我有这个包含
的book.txt文件111 Java Josh Javaaaaaaaaa J1
112 HTML Alex Html J2
我想使用以下代码删除基于ID或名称的文件之一:
public void DeleteBook()
{
try
{
String bidToDelete;
System.out.println("Enter Book Name or Book ID to Delete:");
bidToDelete = sc.next();
File f = new File("C:\\Users\\HP\\Documents\\NetBeansProjects\\LMSConsole\\book.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
File TempFile = new File("temp.txt");
PrintWriter pw = new PrintWriter(TempFile);
String line = br.readLine();
while(line!=null)
{
System.out.println(line);
String[] wordsinline = line.split(" ");
if(wordsinline[0]||wordsinline[1].equals(bidToDelete))
{
f.delete();
pw.write(line);
TempFile.renameTo(f);
if(TempFile.renameTo(f))
System.out.println("Book has been deleted.");
else
System.out.println("Cannot delete file.");
}
else
{
pw.println(line);
}
line = br.readLine();
}
br.close();
pw.close();
}
catch(IOException ex)
{
System.out.println(ex);
}
}
流程是分离搜索到的文件,而其余文件移动到临时txt文件。删除原始文件后,temp txt将重命名为上一个原始txt文件。
它不断产生错误。有什么建议?我是这个文件处理的新手。谢谢!
答案 0 :(得分:0)
您仍在尝试删除原始文件,同时还在阅读原始文件,并在您仍然处于编写过程中时重命名tmp文件。< / p>
直接阅读书籍文件 ,写出要保留的任何行的tmp文件。然后关闭阅读器和编写器,删除书籍文件并重命名tmp文件。