Wenn Spülen, um eine Datei in Gehen?
Wenn ist es nötig, flush eine Datei?
Ich es nie tun, weil ich call Datei.Nah, und ich denke, es wird automatisch gespült, ist es nicht?
- Was macht Sie denken, dass .Close () - automatische Spülung der bytes an Speicher? Die Quelle für Schließen scheint es nicht zu geben Sie dies -- bin ich etwas fehlt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie feststellen, dass ein os.Datei nicht haben .Flush (), weil es nicht brauchen, weil es ist nicht gepuffert. Es schreibt sind direkte Aufrufe zum schreiben in die Datei.
Wenn Ihr Programm beendet(auch wenn es abstürzt) alle Dateien, die es öffnen, werden automatisch geschlossen, indem das Betriebssystem und das Dateisystem schreiben Sie Ihre änderungen auf die Festplatte, wenn es dazu kommt, ist es (manchmal bis zu paar Minuten nachdem das Programm beendet).
Aufrufen os.Datei.Sync() ruft fsync() syscall wird die Kraft von dem Datei system zu Spülen, es Puffer auf der Festplatte. Dies wird garantieren, dass Ihre Daten auf der Festplatte und anhaltende, auch wenn das system ausgeschaltet ist oder das Betriebssystem abstürzt.
Brauchen Sie nicht zu nennen .Sync()
fsync
mitfflush
. Sie brauchen nicht zu flush eine Ungepuffert-Datei. Das bedeutet nicht, dass Sie nicht brauchen, um sync, wenn Sie wollen eine Garantie, dass das schreiben auf die Platte geschrieben. Piotr Praszmo Antwort ist besser.Sehen hier.
File.Sync()
ist syscall zu fsync. Sie sollten in der Lage sein zu finden, mehr unter diesem Namen.Beachten Sie, dass
fsync
ist nicht das gleiche wie fflush und wird nicht ausgeführt, bevor in der Nähe.Sie in der Regel nicht brauchen, um es aufzurufen. Die Datei wird auf den Datenträger geschrieben werden ohnehin nach einiger Zeit und wenn es keinen Stromausfall während dieser Zeit.
sync
ist der Weg, um das Programm mehr bewusst, dass die zugrunde liegende Lagerung ist auf dem neuesten Stand.Sieht die meisten Empfehlungen hier nicht zu nennen fsync(), aber im Allgemeinen ist es vor allem abhängig von Ihren Anwendungsanforderungen. Wenn Sie eine wichtige Datei Lesen/schreiben, es ist immer empfohlen, rufen Sie fsync().
http://www.microhowto.info/howto/atomically_rewrite_the_content_of_a_file.html#idp31936
link, hat mehr details auf als Datei.Sync() helfen.
Wenn Sie möchten, um Datenintegrität zu gewährleisten, so viel wie möglich. Zum Beispiel, was passiert, wenn dein Programm abstürzt, bevor es um das schließen der Datei?