# Zeile aus einer CSV-Datei löschen



## Crasher (30. Apr 2010)

Ich möchte eine Zeile aus einer CSV Datei löschen.
Im Grunde weiß ich auch schon wie ich das anstellen soll, da ich viele Beiträge dazu gefunden habe.
Doch keiner hilft mir bei meinem Problem weiter.

Hier mein Code:

```
public void deleteMovie(String title){
    //CsV einlesen
    readCSV();

    //Den Index des zu löschenden Kontakts herausfiltern
    for(int i=1; i<cast.length; i++){
      if(title.equals(movie[i][0])){
        movieToDelete = movie[i][0] + ";" + movie[i][1] + ";" +  movie[i][2];
      }
    }

    //BufferedReader schließen um wieder Zugriff auf die Datei zu gewähren
    closeBufferedReader();

    try {
      File inFile = new File("data/movieList.csv");

      //Prüfen ob Datei existiert
      if (!inFile.isFile()) {
        System.out.println("Datei existiert nicht");
        return;
      }

      //Eine *.tmp Datei erstellen, die später wieder umbenannt wird
      File tempFile = new File(inFile.getAbsolutePath() + ".tmp");

      BufferedReader br = new BufferedReader(new FileReader("data/movieList.csv"));
      PrintWriter pw = new PrintWriter(new FileWriter(tempFile));

      String line = null;

      //Die Inhalte von der Originaldatei auslesen und in der *.tmp Datei
      //wieder einfügen, allerdings ohne die zu löschende Zeile
      while ((line = br.readLine()) != null) {

        if (!line.trim().equals(movieToDelete)) {

          pw.println(line);
          pw.flush();
        }
      }
      pw.close();
      br.close();

      //Die Originaldatei löschen
      if (!inFile.delete()) {
        System.out.println("Datei konnte nicht gelöscht werden");
        return;
      }

      //Die *.tmp Datei in den Originalnamen umbenennen
      if (!tempFile.renameTo(inFile))
        System.out.println("Datei konnte nicht umbenannt werden");

    }
    catch (FileNotFoundException ex) {
      ex.printStackTrace();
      System.out.println("Zu löschende Datei nicht gefunden: " + ex);
    }
    catch (IOException ex) {
      ex.printStackTrace();
      System.out.println("Fehler beim Löschen  der Datei: " + ex);
    }
  }
```

Mein Problem ist, dass ich immer eine NullPointerException bekomme.
Die .tmp Datei wird erstellt, aber die Originaldatei kann nicht gelsöcht werden.

Danke schonmal im Voraus.
Greetz
Crasher


----------



## bygones (30. Apr 2010)

wo ist denn die NPE ?
also was sagt der StackTrace....


----------



## Crasher (30. Apr 2010)

Danke für die schnelle antwort, aber ich habe das Problem entdeckt.
In der Methode, die die CSV einliest wurde der BufferedReader nciht geschlossen.
Somit konnte ich natürlich die Datei nicht löschen.

Danke aber trotzdem
Viele Grüße
Crasher


----------



## bygones (30. Apr 2010)

erklärt nicht wirklich den NullPointer... aber wenns nun klappt


----------

