1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Dateien sicher sichern...

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Cptn Crunch, 17.04.07.

  1. 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)?
     
  2. Kernelpanik

    Kernelpanik Ingol

    Dabei seit:
    05.03.04
    Beiträge:
    2.098
    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.
     
  3. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.255
    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.
     
    #3 tjp, 17.04.07
    Zuletzt bearbeitet: 17.04.07
  4. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Viele Klassen haben die Methode writeToFile:atomically:

    atomically
    If YES, the data is written to a backup file, and then—assuming no errors occur—the backup file is renamed to the name specified by path.

    Alex
     
  5. 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! :)
     

Diese Seite empfehlen