• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Dateien sicher sichern...

  • Ersteller Ersteller Cptn Crunch
  • Erstellt am Erstellt am

Cptn Crunch

Gast
Hallo,

Ich programmiere in Java 5 aber die Frage geht auch Objective C an. Mich interessiert, ob es unter OS X eine empfohlene Methode gibt, wie man Dateien am sichersten überschreiben kann. Direktes überschreiben ist nicht atomar und ziemlich riskant, falls Fehler auftreten.

Gibt es denn in OS X eine atomare File-Swap Funktion, z.B. in Cocoa? Java bietet sowas ja schon mal nicht an, soweit ich sehen kann.

Sollte man die bestehende Datei zuerst umbennennen oder sollte man besser die neue Datei in eine temporäre schreiben und dann erst die alte umbennen, dann die neue in the alte umbennen, und dann die alte löschen (das habe ich früher immer so gemacht)?
 
Direktes Überschreiben ersetzt die Datei vollständig oder Pogramme mit Paketinhalten. Da wird nicht geschaut ob die eine odere andere identisch ist sondern einfach überschrieben.
 
Direktes überschreiben ist nicht atomar und ziemlich riskant, falls Fehler auftreten.
Geht es Dir um das sichere Löschen der alten Daten oder um Sicherheit im Sinne von transaktionsfest? Wenn es letzteres ist, dann empfiehlt es sich erstmal die neue Datei zu schreiben und dann die alte zu löschen. Bei größeren Dateien bei denen das nicht praktikabel ist, müßtest Du Dir ein journaling Mechnismus ausdenken, oder aber Du nimmst lieber gleich ein Datenbankmodul wie es SQLite, daß dies von Haus aus kann.
 
Zuletzt bearbeitet:
Danke!

Es ging mir nicht darum, sicher zu überschreiben, sondern in einer atomaren Transaktion zu sichern. Datenbanken kommen nicht in Frage. Vielleicht habe ich mich da unklar ausgedrückt. Zuerst gespeichert und dann erst alte Datei gelöscht habe ich schon immer, und zwar so: in temporäre Datei im selben Ordner sichern, dann alter Datei neuen Namen geben, dann der temporären Datei den Namen der alten geben, dann alte Datei löschen. Bei diesem Vorgehen habe ich aber schon Verwirrung beim Finder feststellen können, und mich daher gefragt ob man den Finder selbst dazu bringen kann zwei Dateien zu 'swapen'. Oder sollte ich's umgekehrt machen? Alte Datei umbennen, neue Datei unter altem Name schreiben, dann alte Datei löschen?

Ich denke die beste Lösung wäre sowas wie writeToFile:atomically: zu verwenden. Nur in Java gibt's das glaub ich nicht. :-!

Auf jeden Fall danke für die Hinweise! :-)