2017-05-01 51 views
0

所以我有一個包含如何根據搜索到的兩個變量刪除Java中的文本文件中的數據?

111 Java Josh Javaaaaaaaaa J1 
112 HTML Alex Html J2 

這book.txt文件我想刪除基於編號或名稱,用下面的代碼文件之一:

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); 
     } 
    } 

流量是分開的搜索文件,其餘部分移至臨時文本文件。一旦原始文件被刪除,臨時文本將被重命名爲前一個原始文本文件。

它不斷產生錯誤。有什麼建議?我是這個文件處理的新手。謝謝!

+0

它會不斷產生什麼錯誤。只是簡單的「錯誤」涵蓋了很多地方! –

+0

現在錯誤消失了。但我無法刪除txt文件,它只是將相同的內容重寫到temp.txt中 – Irfan

回答

0

您正在嘗試刪除原始文件,同時還處於讀取過程中,以及在仍處於寫入過程中時重命名tmp文件。

通過讀取書本文件,向tmp文件寫出你想保留的任何行。然後關閉您的讀寫器,刪除書本文件並重命名tmp文件。

相關問題