什么时候需要flush文件? 我从来没有这样做,因为我调用File.Close,我认为它是自动刷新的,不是吗?
您会注意到os.File没有.Flush(),因为它不需要缓存,因为它没有缓冲。写入它是直接系统调用来写入文件。
当您的程序退出时(即使它崩溃),它打开的所有文件都将由操作系统自动关闭,文件系统会在更改时将更改写入磁盘(有时在程序退出后几分钟) 。
调用os.File.Sync()将调用fsync()系统调用,这将强制文件系统将其缓冲区刷新到磁盘。即使系统断电或操作系统崩溃,这也可以保证您的数据在磁盘上并且是持久的。
你不需要调用.Sync()
看起来这里最多的建议是不要调用fsync(),但一般来说它主要取决于你的应用程序要求。如果您正在处理关键文件读/写,则始终建议调用fsync()。
http://www.microhowto.info/howto/atomically_rewrite_the_content_of_a_file.html#idp31936
链接,有关file.Sync()何时有用的更多详细信息。
当您想要尽可能确保数据完整性时。例如,如果您的程序在关闭文件之前崩溃会发生什么?