Aus einer Datei lesen und in gleiche Datei schreiben



  • Hallo Leute,
    ich möchte aus einer Datei solange lesen, bis ein bestimmter String in einer Zeile gefunden wird. Diesen muss ich dann durch einen anderen ersetzen und die Zeile wie der in die Datei zurückschreiben.

    Das geht alles soweit ganz gut, ich habe nur ein paar Probleme mit dem Handling. Und zwar: wenn die neue Zeile kürzer ist, dan bricht der Schreiber sowohl am Ende meines ersetzten String, als auch des ursprünglichen Zeilenumbruches.
    Ist die Zeile länger, schreibt er meine neue Zeile zwar ordnungsgemäß in eine Zeile, überschreibt aber von der nächste Zeile soviele Zeichen, wie die neue Zeile länger ist.

    Der Text sieht so aus:

    Ursprung:

    xxx c:\w2k\hallo.txt yyy
    Hier ist die neue Zeile zu finden

    Modifiziert (kürzer):

    xxx c:\w\hallot.txt yyy

    Hier ist die neue Zeile zu fidnen

    Modifiziert(länger):

    xxx c:\w2ktest\hallo.txt yyy
    ist die neue Zeile zu finden

    Ich schaffe es irgendwie nicht den Dateizeiger korrekt zu positionieren, zumal sich die Position nach jeder Längenänderung ja verändert.

    Im Prinzip müsste ich einafch die Zeile mit dem String komplett zu löschen und einfach neu schreiben.
    Hat einer eine Idee?

    Danke

    ps. Und bitte nicht fragen, warum ich keine Hilfsdatein zum rausschreiben und wieder reinschreiben nehmen kann. Es geht nicht 🙂



  • Du kannst in einer Datei nicht einfach Zeichen rausschneiden oder dazwischenschieben, bestenfalls die vorhandenen Zeichen ersetzen. Also müßtest du von deinem Fundort an alle Zeichen bis zum Dateiende einlesen und hinter deinem Ersatztext neu einfügen.

    (wenn du das öfter machen sollst, empfiehlt es sich, die Datei einmal komplett einzulesen und dann im RAM zu bearbeiten)


Anmelden zum Antworten