如何根据搜索到的两个变量删除Java中的文本文件中的数据?

时间:2017-05-01 09:10:37

标签: java netbeans console console-application file-handling

所以我有这个包含

的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文件。

它不断产生错误。有什么建议?我是这个文件处理的新手。谢谢!

1 个答案:

答案 0 :(得分:0)

您仍在尝试删除原始文件,同时还在阅读原始文件,并在您仍然处于编写过程中时重命名tmp文件。< / p>

直接阅读书籍文件 ,写出要保留的任何行的tmp文件。然后关闭阅读器和编写器,删除书籍文件并重命名tmp文件。