ファイルをフラッシュする必要があるのはいつですか?
File.Close を呼び出して、自動的にフラッシュされると思うので、私は決してしませんね。
4 に答える
os.File には .Flush() がないことに気付くでしょう。バッファリングされていないため必要がないからです。それへの書き込みは、ファイルに書き込むための直接のシステムコールです。
プログラムが終了すると (クラッシュした場合でも)、開いているすべてのファイルはオペレーティング システムによって自動的に閉じられ、ファイル システムは変更をディスクに書き込みます (プログラムが終了してから数分後になる場合もあります)。 .
os.File.Sync() を呼び出すと、fsync() syscall が呼び出され、ファイル システムがそのバッファをディスクに強制的にフラッシュします。これにより、システムの電源が切られたり、オペレーティング システムがクラッシュしたりしても、データがディスク上に保持され、永続的であることが保証されます。
.Sync() を呼び出す必要はありません
ここで最も推奨されるのは fsync() を呼び出さないことですが、一般的には主にアプリケーションの要件に依存します。重要なファイルの読み取り/書き込みに取り組んでいる場合は、常に fsync() を呼び出すことをお勧めします。
http://www.microhowto.info/howto/atomically_rewrite_the_content_of_a_file.html#idp31936
リンクには、いつ file.Sync() が役立つかについての詳細があります。
できるだけデータの整合性を確保したい場合。たとえば、ファイルを閉じる前にプログラムがクラッシュした場合はどうなるでしょうか。