Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 500
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Bestimmte Zeile einer Datei löschen


Autor: Gast
Sprache: C#
Bewertung: 1,8
(1 Bewertung)
Anzahl der Aufrufe: 7308
  
Kick it on dotnet-kicks.de  

Beschreibung:

Löscht die angegebende Zeile aus der Datei.

Update:
Nach den mehr oder weniger netten Hinweisen ändere ich mal das Snippet.

Benötigte Namespaces:
using System.IO;


Abgelegt unter: Datei, Zeilen.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        /// <summary>
        /// Löscht eine Zeile an der angegebenden Zeile
        /// </summary>
        /// <param name="sFilename">Dateipfad</param>
        /// <param name="iLine">zu löschende Zeile</param>
        private void RemoveLine(string fileName, int line)
        {
            // Datei existent, dann ...
            if (File.Exists(fileName))
            {
                int counter = 1;
                StringBuilder sb = new StringBuilder();
                // Zeile für Zeile in der Datei durchlaufen
                foreach (string s in File.ReadAllLines(fileName, Encoding.Default))
                {
                    // wenn Zeile ungleich der zu löschenden Zeile ist, dann...
                    if (counter != line)
                        sb.AppendLine(s); // Zeile zum StringBuilder hinzufügen

                    counter++;
                }

                // mit Hilfe des StringBuilder Inhalts, die vorhandene Datei ersetzen
                File.WriteAllText(fileName, sb.ToString(), Encoding.Default);
            }
        }
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

hackman schrieb am:  13.04.2010 22:45:01

sehr schlechtes snippet, weil
- es gibt eine funktion um eine datei komplett zeilenweise einzulesen (files.readall oder so ähnlich)
- wenn man schon texte zusammenhängt, dann bitte einen stringbuilder verwenden!! ansonsten allokiert man in jeder zeile wieder neuen speicher
- dateien immer in einem using statement öffnen und schließen
Christopher Wolf schrieb am:  14.04.2010 12:04:15

Hi Sven,

ich habe dein Snippet mal etwas "umgebaut" und das kam dabei raus:

/// <summary>
/// Löscht eine Zeile an der angegebenden Zeile
/// </summary>
/// <param name="fileName">Dateipfad</param>
/// <param name="line">zu löschende Zeile</param>
private void RemoveLine(string fileName, int line)
{
// Datei existent, dann ...
if(File.Exists(fileName))
{
int counter = 1;
StringBuilder sb = new StringBuilder();
// Zeile für Zeile in der Datei durchlaufen
foreach (string s in File.ReadAllLines(fileName, Encoding.Default))
{
// wenn Zeile ungleich der zu löschenden Zeile ist, dann...
if(counter != line)
sb.AppendLine(s); // Zeile zum StringBuilder hinzufügen

counter++;
}

// mit Hilfe des StringBuilder Inhalts, die vorhandene Datei ersetzen
File.WriteAllText(fileName, sb.ToString(), Encoding.Default);
}
}


Das erfüllt die gleiche Aufgabe wie dein Snippet und ist wie gesagt nur abgeändert...

Ansonsten muss ich Hackman zustimmen in Hinsicht.
Hier ist ein Link zu einem Snippet wo verschiedene Wege aufgezeigt werden wie man eine Datei einlesen kann.

http://dotnet-snippets.de/dns/textdatei-einlesen-auf-verschiedene-arten-SID1331.aspx
hackman schrieb am:  21.05.2010 00:50:51

man könnte hier streiten, ob ein string.join schneller als ein stringbuilder ist. auf jeden fall könnte man das wunderbar in einem linq ausdruck schreiben, in etwa
File.WriteAllText(fileName, String.Join("\r\n", File.ReadAllLines(fileName, Encoding.Default).Where((l,idx) => idx != line).ToArray()), Encoding.Default);
Christopher Kk schrieb am:  21.05.2010 07:15:30

@hackman: Hast du ein Performancevergleich angestellt oder warum stellst du solche Vermutungen in den Raum? Zumal du in deinem ersten Post sogar zum Stringbuilder empfohlen hast.Also entweder vergisst du was jedesmal schreibst, liest deine alten Kommentare nicht oder es hat sich jemand unter deinem namen eingeloggt und macht Unsinn. Auf jedenfall Widersprichst du dir hier.


Diese Snippets könnten für Sie interessant sein:
[VB.NET] Datei im Explorer anzeigen und markieren
[C#] Datei anlegen
[C#] Aktuelles Verzeichnis auslesen
[VB.NET] CRC32 Hash einer Datei berechnen
[VB.NET] Den MD5 Hash einer Datei ermitteln
[VB.NET] Datei mittels Windows Dialog löschen
[VB.NET] Datei mittels Windows Dialog verschieben
[VB.NET] Datei mittels Windows Dialog kopieren
[VB.NET] Den SHA1 Hash einer Datei ermitteln
[VB.NET] Prüfen ob Datei gerade benutzt wird
[C#] Dateien in die Zwischenablage kopieren
[ASP.net] Textdatei zum Download anbieten
[C#] MD5-Hash von Dateien ermitteln
[C#] Arraylist in Textdatei schreiben
[C#] Textdatei in Arraylist speichern
[C#] SHA-1 Hash einer Datei erzeugen
[VB.NET] Datei Paketweise Kopieren
[ASP.net] Datei nach Bildupload prüfen
[C#] Dateien suchen mit LINQ
[C#] Datei/Ordner durch Erweiterungsmethoden abfragen
[C#] Datei-Eigenschaften zeigen (Eigenschaften-Fenster)
[C#] CSV Dateien schreiben
[C#] Create Nice File Size in C#
[VB.NET] Programmpfad mittels Erweiterung ermitteln in VB
[VB.NET] Dateien nach Datum sortieren
[C#] CSV und XML-Datei Datenbank-Import (incl. valid-check)
[C#] Datei umbenennen
[C#] Datei im Windows-Explorer anzeigen und markieren
[VB.NET] File Owner / File Besitzer
[VB.NET] wie in der CMD Pfad zu Datei ermitteln anhand des EXE-namens
[C#] Anzahl der Dateien in einem Ordner ermitteln
[VB.NET] Dateigröße als formatierter String
[VB.NET] Alle Dateien eines Ordners auflisten
[VB.NET] Den kurzen Pfad einer Datei ermitteln (8.3 Format)
[VB.NET] Klasse für Dateisuche
[C#] Erzeugen eines zufälligen Strings
[VB.NET] Dummy Datei erstellen
[C#] Datei in Papierkorb verschieben
[C#] Zeilen einer Datei zählen
[C#] Schreibschutz einer Datei setzen / entfernen
[ASP.net] Eine Datei zum Download anbieten
[VB.NET] Prüfen ob Dateiattribut vorhanden ist
[VB.NET] Bestimmtes Dateiattribut entfernen
[VB.NET] Datei ein bestimmtes Attribut geben
[VB.NET] Prüfen ob Datei eine EXE Datei ist
[C#] Prüfen, ob eine Datei ausfürbar ist (.exe, .bat, etc.)
[C#] Alle Dateien eines Ordners auflisten - C# Version -
[C#] eindeutigen Dateinamen ermitteln
[VB.NET] Datei-Inhalt anzeigen
[C#] Dateien und Ordner rekursiv löschen
[C#] Stream in Datei umleiten
[C#] Ordnergröße ermitteln
[C#] Automatisches Umbenennen eines Pfades
[C#] Kapazität mit Einheit darstellen
[C#] LogWriter klasse
[C#] MIMETypeManager
[C#] externes Programm aufrufen (andere Version) mit Parameter
[C#] Herausfinden welches Programm ein bestimmtes Dokument öffnet
[VB.NET] Gibt das Bytearray einer Datei zurück
[C#] Datei ein bestimmtes Attribut geben/setzen
[VB.NET] Klasse für SimpleFileVerification (SFV)
[C#] Laden und speichern von komprimierten Binärdaten
[C#] Datei einlesen und als ArrayList jede Zeile zurückliefern
[C#] Parallele Dateisuche über mehrere Laufwerke
[C#] Byte Größenangaben als String formatieren (KB, MB, GB, ...)
[C#] Textdatei einlesen auf verschiedene Arten
[C#] Datei Teilweise einlesen (gestückelt)
[C#] File Container
[C#] PDF Dateien erstellen
[C#] Ist Datei beschreibbar
[C#] Sichern einer MS-SQLServer Datenbank aus C#
[C#] Datei mi GZip packen
[C#] ini Datei anlegen - mit Dictionary
[C#] Dummy Files erzeugen. ( Mit Inhalt )
[C#] Byte-Array in Struktur kopieren
[C#] Text in Textdateien suchen
[VB.NET] Prüfen, ob eine Datei überschrieben werden kann
[C#] Texteditor als for-Schleife verpackt
[C#] Alle Dateien und Verzeichnisse in einem Ordner löschen

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.