一尘不染

什么时候在Go中刷新文件?

go

什么时候需要刷新文件?
我从不这样做,因为我调用File.Close,并且我认为它会自动刷新,不是吗?


阅读 208

收藏
2020-07-02

共1个答案

一尘不染

您会注意到os.File没有.Flush(),因为它不需要一个,因为它没有缓冲。写入是直接syscall写入文件。

当您的程序退出时(即使崩溃),操作系统将自动关闭所有打开的文件,并且文件系统会在您处理完磁盘后将您的更改写入磁盘(有时会在程序退出后几分钟) 。

调用os.File.Sync()将调用fsync()syscall,它将强制文件系统将其缓冲区刷新到磁盘。即使系统已关闭电源或操作系统崩溃,这也将确保您的数据在磁盘上并且持久。

您不需要调用.Sync()

2020-07-02