Effiziente Möglichkeit zum löschen einer Zeile aus einer text-Datei

Wie lösche ich eine bestimmte Zeile aus einer text-Datei. Was ist der effizienteste Weg, dies zu tun? Die Datei kann potenziell große(über Millionen Datensätze).

UPDATE:
unten ist der code den ich derzeit benutze, aber ich bin mir nicht sicher, ob es gut ist.

internal void DeleteMarkedEntries() {
    string tempPath=Path.GetTempFileName();
    using (var reader = new StreamReader(logPath)) {
        using (var writer = new StreamWriter(File.OpenWrite(tempPath))) {
            int counter = 0;
            while (!reader.EndOfStream) {
                if (!_deletedLines.Contains(counter)) {
                    writer.WriteLine(reader.ReadLine());
                }
                ++counter;
            }
        }
    }
    if (File.Exists(tempPath)) {
        File.Delete(logPath);
        File.Move(tempPath, logPath);
    }
}
  • Wenn du so große Daten speichern, warum bist du nicht mit einer "echten" Datenbank? Ist es eine Einschränkung in dem, was Werkzeuge, die Sie zur Verfügung haben, Ihre aktuellen Fähigkeiten oder den Spezifikationen Ihres Projekts?
  • Es ist eine Anforderung, die von 'oben'. Mit echte Datenbank wäre einfacher für mich, aber leider kann ich es nicht verwenden.
  • Es ist nicht gut, es ist ein bug - sorry 🙁 - Siehe meine Antwort unten
InformationsquelleAutor Valentin | 2009-02-10
Schreibe einen Kommentar