ist es immer schlecht, eine datei mit ios::in|ios::out zu öffnen?
-
naja, dies in der mitte einfügen ist wirklich nicht schön, aber die alternative wär, eine x*100mb große datei komplett in den speicher zu schreiben, und das will ich nicht wirklich :p
-
x*100MB-Datei? Ich glaube hier liegt bereits ein Designproblem vor
MfG SideWinder
-
archiv :p
-
Mein Gott, Microsoft selbst öffnet so Dateien( siehe file oder fstream)
-
So große Archive können schon ein Design-Problem sein. Frag mal den hier was sein Backup macht
naja... Große Dateien gibts ja trotzdem.
ich sitz nämlich im moment an dem problem, dass ich in die mitte einer datei etwas einfügen muss, und da muss ich ja erstmal den rest der datei der hinter dem einfügepunkt steht auslesen, da ja sonst die daten überschrieben werden würden...
leuchtet mir nicht ein. Du kannst in Dateien eh nichts einfügen, sondern nur überschreiben. Man kann mit dem BS aber Dateien in den Speicher mappen. Vielleicht suchst du sowas. Weiß aber nicht wie die Windows-Funktion heißt.
-
Man kann mit dem BS aber Dateien in den Speicher mappen.
unter POSIX Systemen heisst die Funktion man: mmap(2)
-
DrGreenthumb schrieb:
Weiß aber nicht wie die Windows-Funktion heißt.
CreateFileMapping()
-
Wie wär's denn einfach ne zweite temporäre datei zu erstellen, du liest aus der einen bis zum einfügepunkt und schreibst alles in die zweite, da hängst du dein zeug dran und dann überträgst du noch den rest. Dannach alte datei löschen und neue umbenennen. so würd ich das machen.
-
@nox war ja nur ne frage-.-
@drgreenthumbich sitz nämlich im moment an dem problem, dass ich in die mitte einer datei etwas einfügen muss, und da muss ich ja erstmal den rest der datei der hinter dem einfügepunkt steht auslesen, da ja sonst die daten überschrieben werden würden...
ich weis also sehr wohl, dass man nomralerweise nich einfügen kann-.-
@all dann schreib ich halt die datei komplett in den speicher beim bearbeiten,auf windows funktionen will ich in dem fall nich wirklich gerne umsteigen(auch wenn das bs eh nich mehr als das normale filemapping bietet)
-
ich weis also sehr wohl, dass man nomralerweise nich einfügen kann-.-
ja... aber den Zusammenhang zur Fragestellung sehe ich nicht. Wenn du Read-Write öffnest, kannst du genauso wenig einfügen.
-
aber wie auch immer... man kann nicht sagen, dass man niemals nie eine Datei read-write öffnen soll. Ich habs zwar noch nie gebraucht, aber es gibt ja nicht ohne Grund die Möglichkeit dazu.
-
DrGreenthumb schrieb:
ich weis also sehr wohl, dass man nomralerweise nich einfügen kann-.-
ja... aber den Zusammenhang zur Fragestellung sehe ich nicht. Wenn du Read-Write öffnest, kannst du genauso wenig einfügen.
doch, man kann einfügen, man schreibt alles was danach kommt in den speicher,fügt dann daten an, und schreibt die daten aus dem speicher wieder zurück, dass is genau das was ich geschrieben hab,2 mal