Tom: Bereich in TXT Datei ändern?

Beitrag lesen

Hello,

Angenommen man ändert eine Zeile ab und fügt noch drei neue Zeilen ein.
Wie könnte man nun vorgehen um diesen geänderten Bereich mit dem alten auszutauschen und alles wieder in die Datei zu speichern?

Zeilenweise :-))

Es gibt ja gar keine Zeilen in der Datei. Die sind ja nur fiktiv. Hast Du schon mal eine Festplatte auseinandergenommen? Konntest Du da Zeilen sehen?

Nun mal ernsthaft. Stell dir die Datei einfach als einen Bindfaden vor mit Knoten drin. Die Stücke von einem Knoten zum nächsten (exclusiv dem vorderen, inclusiv dem hinteren) sind Deine Zeilen.

Wie würdest Du da nun eine Zeile rausschneiden und zwei neue einfügen?

Was musst Du wissen?

  • Den Aufsetzpunkt in der Originaldatei als Byteposition, also den Beginn des fraglichen Bereiches.
  • Die Länge in _Bytes_, NICHT in _Zeichen_, des fraglichen Bereiches
      Je nachdem, wie die Datei codiert ist, kann ein Zeichen auch mehr als ein Byte benötigen.
      Du benötigst aber die Byte-Position des Beginns und die Länge in Bytes.

Spule bis zur Beginnposition vor und schreibe dabei die eingelesenen Zeichen in eine neue Datei. Schreibe nun die neuen Zeichen in die neue Datei. Spule in der Originaldatei weiter bis zur Endeposition des fraglichen Bereiches vor, ohne die alten Zeichen in die neue Datei zu übertragen. Lese nun den Rest der alten Datei ein und übertrage ihn dabei in die neue Datei.

Abschließend kannst Du die alte Datei in *.bak (oder so ähnlich) umbenennen und der neuen den Namen der alten geben.

Das Ganze sollte geschützt geschehen, also unter Locking.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de