sicheres file-save



  • hi!

    ich habe gerade ein kleines problem beim speichern von daten in eine datei bzw. das hauptproblem besteht eigentlich beim überschreiben einer datei.

    ich baue mir im mittels einem stringstream einen richtig großen dateiinhalt zusammen und muss diesen dann abspeichern bzw. wenn die datei schon vorhanden ist soll diese datei überschrieben werden.

    nun stellt sich die frage, was passiert, wenn das programm genau während dem schreib bzw. überschreib vorgang gekillt wird? sind dann biem überschreibvorgang die alten daten noch vorhanden?

    verhält sich hier die c funktionen wie fopen/fputc/etc. anders wie ein ofstream?

    da im regelfall sehr häufig die datei überschrieben wird (10sec intervall) brauch ich eine extrem große sicherheit, dass ich bei einem programm kill mir nicht irgendwie blöderweise die datei zerstöre.

    DANKE für eure Hilfe!



  • Einfacher Ansatz:

    Speicher in eine Temporärdatei, benenne die aktuelle Datei in .bak oder ähnlich um. Benenne die Temporärdatei in den Namen der aktuellen Datei um. Falls das Programm zwischen nach dem Umbenennen der .bak-Datei und vor dem Umbenennen der Temporärdatei unterbrochen wird, setzt du einfach auf der .bak-Datei wieder auf.

    Alles was dahinter liegt ist Sache des Betriebssystems bzw. des Dateisystems. Darauf kannst du dich in aller Regel auch verlassen, bzw. solltest es auch (außer bei FAT vielleicht :)).



  • danke für den lösungsvorschlag!

    da ich ja dann, schlussendlich die "nicht mehr zu gebrauchene" datei auch löschen muss/soll, stellt sich für mich die frage, gibt es nur die c-fkt remove zum löschen oder auch etwas "verbessertes" für c++


Anmelden zum Antworten