• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Dateien sicher sichern...

  • Ersteller Cptn Crunch
  • 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)?
 

Kernelpanik

Maren Nissen
Registriert
05.03.04
Beiträge
2.303
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.
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
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:

Cptn Crunch

Gast
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. :eek:

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