C++ Dateioperation
-
Ich glaub, dass ios::ate eher ist, was der Threadersteller sucht...
-
Wenn Du ganz am Anfang etwas einschieben willst, mußt Du die ganze Datei neu schreiben.
-
std::stringstream ss; ss << das_was_an_den_anfang_soll << std::ifstream("datei.txt").rdbuf(); std::ofstream stream("datei.txt"); stream << ss.str();(ungetestet)
-
Danke,aber gibt es noch eine andere Möglichkeit,denn wenn man das so auf eine 1gb große Datei anwendet,müssen 1gb in den arbeitsspeicher kopiert und dann wieder zurückgeschrieben werden.
-
Schreib halt direkt in eine neue Datei...
-
Dann muss ja trotzdem die ganze andere datei kopiert werden ...
-
So ist es.
-
Gibt es denn keine andere Möglichkeit als die ganze Datei umzukopieren?
-
Man könnte das ganze in-place machen. Aber das wäre a) viel friemeliger und b) man müßte die Datei trotzdem komplett lesen und schreiben.
-
david_k schrieb:
Gibt es denn keine andere Möglichkeit als die ganze Datei umzukopieren?
Nein. Dateien funktionieren eben so. Das ist eben so gedacht, dass man einfach hinten dranhängen oder überschreiben kann, aber vorne dranhängen ist eine ungewöhnliche Operation. Denk dir eben was aus, dass du nicht mehr vorne anhängen brauchst. Womit wir beim Thema sind: Wofür meinst du, das zu brauchen?
-
Falls das sehr riesige Datenmengen sind, kann man sich überlegen eine Verwaltungsdatei mit Verweisen auf die Dateien zu etablieren. Die wäre klein und man müsste zwar die gesamte Datei neuschreiben, um am Anfang einen Verweis einzufügen, das wäre aber vernachlässigbarer Aufwand.
Aber vermutlich wäre das hier überdimensioniert.