什么时候需要刷新文件?
我从不这样做,因为我调用 File.Close 并且我认为它会自动刷新,不是吗?
user1243746
问问题
20523 次
4 回答
26
您会注意到 os.File 没有 .Flush() 因为它不需要一个,因为它没有缓冲。写入它是直接写入文件的系统调用。
当您的程序退出时(即使它崩溃),它打开的所有文件都将被操作系统自动关闭,并且文件系统会在处理它时将您的更改写入磁盘(有时在程序退出后的几分钟内) .
调用 os.File.Sync() 将调用 fsync() 系统调用,这将强制文件系统将其缓冲区刷新到磁盘。即使系统关闭或操作系统崩溃,这也将保证您的数据在磁盘上并且是持久的。
你不需要调用 .Sync()
于 2012-06-05T00:42:52.397 回答
4
看起来这里的大多数建议是不要调用 fsync(),但总的来说,这主要取决于您的应用程序要求。如果您正在处理关键文件的读/写,始终建议调用 fsync()。
http://www.microhowto.info/howto/atomically_rewrite_the_content_of_a_file.html#idp31936
链接,有关何时 file.Sync() 将提供帮助的更多详细信息。
于 2018-01-29T21:13:47.520 回答
0
当您想尽可能确保数据完整性时。例如,如果您的程序在关闭文件之前崩溃了怎么办?
于 2012-06-02T12:40:47.973 回答