Arbeiten mit grossen Dateien

Hallo Leute,

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.

Danke und Grüße,
Robert

Hi,

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…

Gruß

J.

Hallo José,

es handelt sich um eine .wav-Datei, eher eine flache Struktur.

Will ein Programm schreiben, dass Gaps (kurze digitale Stille) entfernt die durch schlechtes kopieren von Audio-CDs (Bootlegs) entsteht.

Prinzipiell habe ich kein Problem mit Datei nochmal schreiben, wollte nur mal schauen obs nicht was besseres gibt. :smile:

Grüße, Robert