をファイルに保存する必要があるのはいつですか?
私はFile.Closeを呼び出すので決して行っていません。自動的にフラッシュされると思いますか?Goでファイルをフラッシュするのはいつですか?
答えて
os.Fileには、バッファリングされていないため、必要がないため、.Flush()が必要ないことがわかります。ファイルへの書き込みは、ファイルに書き込むための直接のシステムコールです。
プログラムが終了すると(たとえクラッシュしても)、開いているすべてのファイルがオペレーティングシステムによって自動的に閉じられ、ファイルシステムはそのディスクに書き込まれたときに変更をディスクに書き込みますあなたのプログラムは終了します)。
を呼び出すos.File.Sync()を呼び出すとfsync()システムコールが呼び出され、ファイルシステムが強制的にバッファをディスクにフラッシュします。これにより、システムの電源が切れていても、オペレーティングシステムがクラッシュしても、データがディスクに保存され、永続的であることが保証されます。
あなたは.Syncを呼び出す必要はありません()
この答えは 'fsync'と' fflush'を混同します。バッファされていないファイルを_flush_する必要はありません。書き込みがディスクにコミットされたことを保証したい場合は、_sync_する必要はありません。 Piotr Praszmoの答えは良いです。 –
可能な限りデータの整合性を確保したい場合。たとえば、ファイルを閉じる前にプログラムがクラッシュするとどうなりますか?
hereを参照してください。 File.Sync()
は、fsyncに至るまでです。あなたはその名前の下でもっと見つけることができるはずです。
fsync
はfflushと同じではないため、閉じる前に実行されません。
通常、電話する必要はありません。とにかく、しばらくしてからこのファイルがディスクに書き込まれます。
"一般的に電話する必要はありません" これは、誰かがいつでも電源を切断することができる組み込みデバイスで作業していない場合にのみ当てはまります。 – Joppe
この問題は、組み込みデバイスに限定されるものではありません。同期されていない書き込みはファイルシステムのメモリ内のバッファと共に消滅する危険性は常にありますが、現代のジャーナルファイルシステムでは、そのウィンドウはほとんど消えません。バッテリバックアップされたハードウェアの中には、一貫性をさらに向上させるものがあります。 'sync'は、基礎となるストレージが最新であることをプログラムが認識するようにする方法です。 –
は、ここで最も推奨は)(fsyncを呼び出すようにしないようにしているに見えますが、一般的に、それは主に、アプリケーションの要件に依存します。クリティカルなファイルの読み込み/書き込みを行う場合は、常にfsync()を呼び出すことをお勧めします。
http://www.microhowto.info/howto/atomically_rewrite_the_content_of_a_file.html#idp31936
リンク、file.Sync()が役立つときの詳細を持っています。
- 1. Goでfmt.Scanf()の後にStdinをフラッシュする方法は?
- 2. Goの.aファイルとは何ですか?
- 3. Goでいくつかのコマンドをパイプする方法は?
- 4. インタフェースについてGoとJavaの違いは何ですか?
- 5. goファイルでblobstoreにアップロードするファイル
- 6. Goでは、いつ変数に到達できなくなるのですか?
- 7. GoでJSONファイルを解析する
- 8. crossdomain.xmlファイルとフラッシュについて
- 9. goでファイルのメタデータをロード
- 10. Clojure core.async go-blocksはいつ便利ですか?
- 11. PDFHibリソースでファイルをフラッシュしない
- 12. フラッシュでSTLファイルを読む
- 13. dwgファイルをフラッシュ(swf)ファイルに変換するにはどうすればいいですか?
- 14. スタンドアロンのフラッシュexeファイルは外部ファイル/イメージをロード/実行できますか?
- 15. GoでXMLファイルを読む
- 16. Goの5つの秘密のキーワードは何ですか?
- 17. goでExcelファイルを読むには?
- 18. Pythonでファイルの内容をフラッシュするのはどういう意味ですか?
- 19. go、どのファイルと行でのエラー処理ですか?
- 20. Doctrine:1つのクラスのエンティティだけをフラッシュできますか?
- 21. 複数のファイルからなるGoプログラムをコンパイルするには?
- 22. GoでHTMLファイルの要素を変更するにはどうすればよいですか?
- 23. 空になっている構造体を持つ型をGoで使用するのは何ですか?
- 24. Goでは、値はマルチバリューの割り当てにいつコピーされますか?
- 25. クライアントマシンでGoファイルを実行するには?
- 26. Goでファイル長を取得する方法は?
- 27. sybaseでGOコマンドを使用するのはなぜですか?
- 28. フラッシュでオブジェクトをプログラムでスワップする最も良い方法は何ですか?
- 29. goテンプレートで2つの文字列を結合するにはどうすればよいですか?
- 30. GoでHTTP応答をファイルにパイプする方法はありますか?
誰かがこれを閉じたいのですか?コメントしてください? –
.Close()が自動的にバイトをストレージにフラッシュすると思いますか? [クローズの原因はこれを示していないようです](https://golang.org/src/os/file_unix.go?s=5591:5619#L179) - 何か不足していますか? –