Wie schreibe ich sicher in eine Datei?

Stellen Sie sich vor, Sie haben eine Bibliothek, um mit einer Art XML-Datei oder Konfigurationsdatei zu arbeiten. Die Bibliothek liest die gesamte Datei in den Speicher und bietet Methoden zum Bearbeiten des Inhalts. Wenn Sie mit der Bearbeitung des Inhalts fertig sind, können Sie a aufrufenwrite um den Inhalt zurück in die Datei zu speichern. Die Frage ist, wie dies auf sichere Weise getan werden kann.

Das Überschreiben der vorhandenen Datei (beginnend mit dem Schreiben in die Originaldatei) ist offensichtlich nicht sicher. Wenn daswrite Die Methode schlägt fehl, bevor sie abgeschlossen ist. Am Ende haben Sie eine halb geschriebene Datei und haben Daten verloren.

Eine bessere Möglichkeit wäre, an a zu schreibenvorübergehend Datei irgendwo, und wenn diewrite Methode ist beendet, SieKopieren die temporäre Datei in die Originaldatei.

Wenn nun die Kopie fehlschlägt, haben Sie die Daten in der temporären Datei noch korrekt gespeichert. Wenn das Kopieren erfolgreich ist, können Sie die temporäre Datei entfernen.

Auf POSIX-Systemen kann man wohl das verwendenrename Systemaufruf, der eine atomare Operation ist. Aber wie würden Sie dies am besten auf einem Windows-System tun? Wie gehen Sie am besten damit um?Python?

Gibt es auch ein anderes Schema zum sicheren Schreiben in Dateien?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage