2017-05-01 8 views
0

だから私は、私は次のコードでIDまたは名前に基づいてファイルのいずれかを削除したい検索された2つの変数に基づいて、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); 
     } 
    } 

流れが分離することです残りのファイルは一時的なtxtファイルに移動されます。元のファイルが削除されると、temp txtは元のtxtファイルの名前に変更されます。

エラーを生成し続けます。何かアドバイス?私はこのファイル処理の事で初心者です。ありがとう!

+0

生成しているエラーは何ですか?単純な "エラー"だけで多くの問題をカバーしています! –

+0

エラーがなくなりました。しかし、私はtxtファイルを削除することはできません、ちょうどtemp.txtに同じものを書き換える – Irfan

答えて

0

まだ読んでいる間に元のファイルを削除しようとしていますが、まだ書いている途中でtmpファイルの名前を変更しています。

ブックファイルをすべてまで読んで、保存したい行をtmpファイルに書き出します。その後、リーダーとライターを閉じ、ブックファイルを削除して、tmpファイルの名前を変更します。

関連する問題