[C#] Bestimmte Zeile einer Textdatei löschen

Drucken
( 3 Votes )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 04.12.2011 Zuletzt aktualisiert am 12.10.2012 Geschrieben von Jonny132
Vielmals werden für das Speichern von Daten Textdateien verwendet. Um eine bestimmte Zeile aus dieser Datei zu löschen, habe ich euch eine kleine Funktion geschrieben:

Um die Funktionen des File-Objekts benutzen zu können benötigen wir den IO - Namespace. Diesen binden wir am anfang der Klasse ein.

Einbinden des IO - Namespaces

using System.IO;

Funktion zur Löschung einer Zeile in einer Textdatei

 private bool DeleteLineFromTextFile(string path, int lineToDelete)
 {
   try
   {
     if(File.Exists(path))
     {
        List<string> lines = File.ReadAllLines(path).ToList<string>();
        if(lines.Count >= lineToDelete)
       {
         lines.RemoveAt(lineToDelete - 1);
         File.WriteAllLines(path, lines);
         return true;
       }
     }
 
     return false;
   }
   catch
   {
     return false;
   }
 }

Als Parameter für die Funktion, übernehmen wir den Pfad zur Textdatei und die Nummer der Zeile die gelöscht werden soll. Zusätzlich geben wir von der Funktion einen bool Wert zurück falls die Löschung der Zeile nicht Funktioniert hat.
Wir packen die ganze Funktion in einen Try - Catch Block damit, falls es zu einem Fehler kommt, wir den Wert false zurückgeben können.
Dann wird Überprüft ob der Pfad den wir an die Funktion übergeben haben überhaupt existiert bzw. die Datei.
Mit der Funktion File.ReadAllLines lesen wir nun die Textdatei in eine List<string> ein. List<string> verwenden wir, um das entfernen der Zeile zu erleichtern.
Danach prüfen wir ob die Datei die eingelesen wurde, überhaupt die Anzahl der Zeilen besitzt die wir löschen wollen.
Falls dies zutrifft, wird zunächst mit RemoveAt ( -1 da Arrays bzw Lists immer 0-Basiert sind) die Zeile entfernt, und per File.WriteAllLines werden die Zeilen nun wieder zurück in die Datei geschrieben.
Wenn dies alles ohne Exception geklappt hat, geben wir True zurück - Die Zeile wurde gelöscht. ansonsten am Ende der Funktion false.

Der Aufruf der Funktion könnte zum Beispiel so aussehen:

Funktionsaufruf mit Ausgabe

 if (DeleteLineFromTextFile(@"C:\Temp\test.txt", 2))
 {
   MessageBox.Show("Zeile erfolgreich gelöscht");
 }
 else
 {
   MessageBox.Show("Es ist ein Fehler beim löschen der Zeile aufgetreten");
 }
Wie Sie sehen wird beim Erfolgreichen löschen der Zeile eine Erfolgsmeldung ausgegeben, ansonsten eine Fehlermeldung.

    Veröffentlichen Sie ihre Kommentare ...