2017-07-20 3 views
0

Ich habe versucht, eine Zeile aus einer Datei zu löschen. Ich habe im Internet gesucht. Und ich habe eine Methode entwickelt. Hier ist es.So löschen oder entfernen Sie eine bestimmte Zeile aus einer Textdatei

Ich weiß nicht, was mit dieser Methode falsch ist. Kannst du mir helfen?

Hier ist, wo ich diese Methode verwenden

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



    } 
    }); 

Löschen eines JButton ist. Kein Fehler erhalten.

+0

Haben Sie eine Ausnahme oder es passiert nichts? – user7294900

+0

Was ist der Fehler? –

+0

Nur nichts. Ich stelle diese Methode in einen Listener. Und nachdem diese Methode funktioniert, schreibe ich System.out.println ("done"). Und Programm schreibt fertig. Aber mit dieser Methode passiert nichts. –

Antwort

0

diesen Code Versuchen:

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. Es hat wirklich funktioniert. Vielen Dank. Aber ich verstehe das Problem nicht. Könnten Sie erklären, –

+0

Ich denke, dass renameTo nicht funktioniert, weil die Datei 'f' bereits existiert. Sie haben auch versucht, die Datei zu modifizieren, ohne den BufferedReader zu schließen, der sie benutzt hat. Vielleicht war es deshalb der Grund, dass 'books.txt' nicht gelöscht werden konnte. Also ist es besser, zuerst den Writer und den Reader zu schließen –

+0

Ja. Ich habe verstanden. f ist vorhanden :). Danke noch einmal. –

Verwandte Themen