ich würde gerne in C/C++ eine grosse Datei (~ 700 MB) öffnen und darin an verschiedensten Stellen einige Bytes rauslöschen.
Wie kann ich sowas am einfachsten und performantesten machen? Das einzige was mir spontan einfällt ist die ganze Datei neu zu schreiben, aber das kanns ja nicht sein, oder?
Ich arbeite mit Visual C++, am liebsten würde ich ANSI C kompatible Funktionen verwenden, ich freue mich aber auch über andere Hinweise.
Wie kann ich sowas am einfachsten und performantesten machen?
Das einzige was mir spontan einfällt ist die ganze Datei neu
zu schreiben, aber das kanns ja nicht sein, oder?
Naja - um welche Art Datei handelt es sich?
Wenn die interne Struktur z.B. eine Art verkettete Liste beinhaltet, dann hast Du sicher Möglichkeiten. Handelt es sich aber um eine „flache“ Binärdatei, hast Du keine Alternative.
Überlegungen kannst Du sicher anstellen, wie Du schreibst: blockweise, sequentiell…
Eine etwas unelegante, aber sicher schnelle Methode bestünde darin, das Dateisystem zu manipulieren: suche die Stelle, die Du bearbeiten willst, ermittle, auf welchen Festplattensektor sie liegt, verändere oder vertausche diesen. Ist aber Fitzelarbeit…