2017-07-20 32 views
0

ファイルから行を削除しようとしました。私はインターネットで検索しました。そして私は方法を作った。はい、これ。テキストファイルから特定の行を削除または削除する方法

public void removeLine(BufferedReader br , File f, String Line) throws IOException{ 
    File temp = new File("temp.txt"); 
    BufferedWriter bw = new BufferedWriter(new FileWriter(temp)); 
    String removeID = Line; 
    String currentLine; 
    while((currentLine = br.readLine()) != null){ 
     String trimmedLine = currentLine.trim(); 
     if(trimmedLine.equals(removeID)){ 
      currentLine = ""; 
     } 
     bw.write(currentLine + System.getProperty("line.separator")); 

    } 
    temp.renameTo(f); 
    bw.close(); 
    br.close(); 
} 

この方法で何が問題なのか分かりません。私たちを手伝ってくれますか?私は削除

delete.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent evt) { 


     BufferedReader br = null; 
    try{ 
    String enterID2 = enterID1.getText().trim(); 
     File books = new File("books.txt"); 
     br = new BufferedReader(new FileReader(books)); 
     removeLine(br , books, enterID2); 
     System.out.println("done"); 

    }catch (NumberFormatException e1) { 
       System.out.println("This is not a number"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 



    } 
    }); 

この方法を使用するのはここ

があるのJButtonです。エラーは受信されませんでした。

+0

あなたは例外または何も起きていますか? – user7294900

+0

エラーとは何ですか? –

+0

ただ何も。このメソッドをリスナーに配置します。そして、このメソッドの後、私はSystem.out.println( "done")を記述します。そしてプログラム書き込みが完了しました。しかし、この方法では何も起こりません。 –

答えて

0

は、このコードを試してみてください。

public static void removeLine(BufferedReader br , File f, String Line) throws IOException{ 
    File temp = new File("temp.txt"); 
    BufferedWriter bw = new BufferedWriter(new FileWriter(temp)); 
    String removeID = Line; 
    String currentLine; 
    while((currentLine = br.readLine()) != null){ 
     String trimmedLine = currentLine.trim(); 
     if(trimmedLine.equals(removeID)){ 
      currentLine = ""; 
     } 
     bw.write(currentLine + System.getProperty("line.separator")); 

    } 
    bw.close(); 
    br.close(); 
    boolean delete = f.delete(); 
    boolean b = temp.renameTo(f); 
} 
+0

Wowからの回答を確認してください。それは実際に働いています。ありがとうございました。しかし、私は問題を理解していない。あなたは説明できます –

+0

ファイル 'f'が既に存在するので、renameToは機能しません。また、あなたはそれを使用していたBufferedReaderを閉じずにファイルを修正しようとしていたので、おそらくそれが 'books.txt'を削除できなかった理由でした。最初にライターとリーダーを閉じる方が良いです –

+0

はい。私は理解した。 fは存在します:)。再度、感謝します。 –

関連する問題