go - 何时在 Go 中刷新文件?

标签 go synchronization flush

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

最佳答案

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

当你的程序退出时(即使它崩溃了),它打开的所有文件都会被操作系统自动关闭,并且文件系统会在它接近它时将你的更改写入磁盘(有时在你运行后的几分钟内)程序退出)。

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

你不需要调用 .Sync()

关于go - 何时在 Go 中刷新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10862375/

相关文章:

regex - 查找与正则表达式golang匹配的所有字符串

authentication - 身份验证期间缓冲

golang 在子目录中找不到包 gin

ios - 在RestKit中,如何强制本地数据库匹配远程 "master"数据集

c++ - 为什么一个简单的程序不能立即启动

methods - 为什么通过方法对结构所做的更改不会持续存在?

android - 如何了解在android上是自动启动同步还是手动启动同步?

java - 为什么此代码中没有发生同步?

python - sys.stdout.flush() 无法与 python 和 electronjs 一起正常工作

c++ - 'flushing the stream' 是什么意思?