什么时候需要刷新文件?
我从来没有这样做,因为我叫File.Close,我认为它会自动刷新,是不是?
Answer 1:
你会发现,一个os.File没有.Flush(),因为它并不需要一个,因为它没有缓冲。 写它是直接的系统调用来写入文件。
当你的程序退出(即使它崩溃),它具有开放将操作系统和文件系统将自动关闭,当它(在程序退出后,有时长达数分钟)得到周围将会写入更改磁盘的所有文件。
调用os.File.Sync()将调用FSYNC()系统调用,将强制文件系统来刷新它的缓冲区写入磁盘。 这将保证您的数据在磁盘上的和持久的,即使系统断电或操作系统崩溃。
你并不需要调用.SYNC()
Answer 2:
见这里 。 File.Sync()
是系统调用到FSYNC 。 你应该能够找到下这个名字了。
请记住, fsync
是不一样的fflush之前关闭不执行。
你一般不需要调用它。 该文件将被写入磁盘,无论如何,一段时间后,如果有在此期间没有停电。
Answer 3:
看起来这里的大多数建议是不叫的fsync(),但一般它主要取决于你的应用需求。 如果您正在使用的关键文件的读/写,它总是建议致电FSYNC()。
http://www.microhowto.info/howto/atomically_rewrite_the_content_of_a_file.html#idp31936
链接,对当file.Sync()将帮助更多的细节。
Answer 4:
当你想确保数据的完整性尽可能地。 例如,如果你的程序崩溃谈到关闭文件之前会发生什么?
文章来源: When to flush a file in Go?