#1

Dateioperationen in C bzw. C++


Tensor

Tach auch.Ich habe da ein Problem, ich möchte an einer beliebigen Position in einer Datei etwas hinzufügen, aber so das der Rest der Datei weitergeschoben und nicht überschrieben wird. Dann muss ich noch die Möglichkeit haben etwas mitten in einer Datei zu löschen.Meine Frage: Gibts da irgendwelche Tricks oder Funktionen oder muss ich jedesmal den gesamten Inhalt der Datei ab der Position auslesen, von der aus ich etwas einfügen/löschen möchte und alles hinterher wieder drankleben ? Das kanns doch irgendwie nicht sein, da die Dateien ja auch mal recht gross werden können und z.b. ein Hexeditor aus einer 300MB Datei mal eben ein Stück mittendrin entfernen kann ohne alles dahinter neu zu speichern.

#2

> Dateioperationen in C bzw. C++


Dorim

Grrr ... jetzt war wieder meine Session und damit der Text weg. Also hier nochmal die Kurzfassung: Ja, du mußt die Daten verschieben, wenn du mitten im File löschen oder einfügen willst. Allerdings solltest das nicht von Hand machen, sondern Memory Mapped Files verwenden. Dadurch kann das OS das Kopieren ziemlich gut optimieren.Gruß,Dorim

#3

> Dateioperationen in C bzw. C++


Tensor

Danke für den Tip. Da habe ich direkt eine weitere Frage. Wie kann ich denn eine Datei nachträglich verkleinern ? z.B. aus einer 2 MB Datei nur das 1. MB beibehalten aber den Rest löschen, muss ich da eine temporäre Datei anlegen und dann das 1. MB reinkopieren und das Original danach löschen oder gibt es da bessere Möglichkeiten ?

#4

> Dateioperationen in C bzw. C++


Tensor

Also im Grunde sowas wie SetEndOfFile für Win32. Nur suche ich eine eine Nicht Windows Lösung.

#5

> Dateioperationen in C bzw. C++


AIX

truncate() und ftruncate() (POSIX-, BSD- und SysV-Standard)

#6

> Dateioperationen in C bzw. C++


Tensor

Gibts da denn keine High Level Funktionen für ? Der Code soll möglichst plattformunabhängig sein.

#7

> Dateioperationen in C bzw. C++


Grumbel

Hoeher als POSIX kommst du nicht, ANSI-C und ANSI-C++ stellen fuer sowahl keine Funktionen zur verfuegung, ausser ebend die Datei komplett neuschreiben.