Take: Dateisperren im Dauereinsatz

Beitrag lesen

Moin,

so, hab jetzt mal nen Spaziergang an der frischen Luft gemacht, kann ganz schön helfen :)
Folgende Idee:

Zusätzlich zu jeder betroffenen Datei (foo.json) gibt es eine 2te Datei foo.json.version. In dieser steht lediglich eine Zahl, die bei jedem Schreiben inkrementiert wird.
Folgendes Vorgehen:
Beim Öffnen der Datei (egal in welchem Modus) wird automatisch immer die aktuelle Version mitgelesen.

Wenn dann zurückgeschrieben wird, wird nach dem erlangen von LOCK_EX erstmal überprüft, ob die Versionsnummer noch stimmt. Wenn nicht, wird eine FileModifiedException (o.ä.) geschmissen, derjenige der die File Klasse benutzt muss dann damit umgehen (im Falle einer Config die Config neu laden und dann die Änderungen speichern, etc.).

Dadurch kann ich sogar folgendes machen: Datei mit LOCK_SH sperren, einlesen, Sperre freigeben. Dann Daten modifizieren und wie oben zurückschreiben.

Klingt gut?

Gruß,
Take