CFile: Zeile löschen mit write?
-
Hallo,
ich habe eine Log datei in die über Write immer eine Zeile anhänge. Da die Datei so immer größer wird, würde ich gerne ab einer bestimmten größe die erste Zeile wieder löschen danach am ende eine neue anhängen.
So sieht das aus:LogFile.SeekToEnd();
LogFile.Write(Line.GetBuffer(line.GetLength()), Line.GetLength());
LogFile.Flush;
LogFile.Close();Meine Idee war eine Abfrage ob die größe erreicht ist und dann Löschen der ersten Zeile. Wie kann ich das machen? Wollte mit Write eine leere Zeile an den Anfang schreiben, aber irgendwie funktioniert das nicht. Hat jemand nen Tipp?
-
Ich würde alles einlesen, die erste Zeile löschen, dann wieder schreiben.
Simon
-
theta schrieb:
Ich würde alles einlesen, die erste Zeile löschen, dann wieder schreiben.
Simon
Problem da ist aber das es einmal Zeit und entsprechend der größe der Datei auch noch speicher benötigt der allokiert und wieder deallokiert werden muss. -> Zeit behaftet.
Und bei Log-Einträgen ist normal so, das man schnell sein muss, bzw will da man wegen des Loggen ja nicht die Software entsprechen runter ziehen möchte.Wurde dir vorschlagen (so ist normalerweise mein Weg) wenn die Datei eine bestimmte größe besitzt, diese in "Datei.log.bak" umzubennen und mit einer neuen "frischen" Datei wieder anzufangen. Natürlich vor dem Umbennen die allte bak-Datei löschen sollte diese schon existieren.
Dies kannst du natürlich auch entsprechend aufboren und sagen, das du vllt die letzten 5 Dateien behalten möchtest, musst halt einfach immer erst die letzte (5te) wegeloeschen und entsprechen die vorhegenden von hinten nach vorne umbennen (Von 5 nach 1 gehend).
Mfg Marco