David Bruchmann: Suchen und ersetzen in Datei: Speicherzugriffsfehler

Beitrag lesen

Also, der Ansatz von Hopsel ist bei der Dateigröße wichtig, da sonst wahrscheinlich versucht wird die gesamte Datei in den Speicher einzulesen.

Ich habe dazu in PHP mal eine streamingfähige Funktion geschrieben, die die Datei immer nur Blockweise einliest. Eine Änderung der Daten habe ich nicht implementiert, da ich meine Dateien nur auslesen wollte. Ich habe das mit Dateien getestet, die ca. 2 GB groß waren (also wesentlich größer als mein damaliger Speicher).

Vermutlich ändert sich bei Dir die Dateigröße (da Du ja Leerzeichen einfügen willst). Deswegen würde ich die alte Datei nicht überschreiben, sondern (falls Du noch HDD-Platz hast) eine neue Schreiben, wo die entspr. Manipulationen durchgeführt wurden. Ansonsten müßte meine Funktion geändert werden, da sich die Zeiger sonst mit jedem eingefügten Zeichen zusätzlich verschieben müssen.

Du kannst die kommentierten Funktionen mit Kommentaren bei mir per Mail anfordern, Dateien mit Testaufrufen habe ich ebenfalls.
Die Dateien sind zu umfangreich, um sie hier zu posten.

Ich würde übrigens empfehlen, die Datei zu splitten oder in einer anderen Form zu speichern, da 10GB allgemein schwer zu handeln sind.
Ich habe meine Daten damals mit obigen Funktionen in einer Datenbank registriert und wusste dann zumindest wo ich nach bestimmten Dingen suchen muss. Der Einsatz der Funktionen ist aber Variabel und kann auch anders eingesetzt werden.

Gruß
David