包 renameio 提供了一种原子级创建或替换文件或符号链接的方法。
renameio Go 包提供了一种原子地创建或替换文件或符号链接的方法。
对这个问题的一种简单方法是创建一个临时文件,然后调用 os.Rename()。然而,存在许多细节使得正确的操作顺序很难确定:
如果出现错误,临时文件应该被删除,但如果重命名成功,就不应尝试删除,因为可能会创建一个具有相同名称的新文件。这使得简单的 defer os.Remove(t.Name()) 不足以解决问题;必须保存状态。
为了使重命名操作成功,临时文件必须创建在相同的文件系统上(相同的挂载点),但 TMPDIR 环境变量仍应得到尊重,例如将临时文件指向位于 Web 服务器的文档根目录之外,但仍在相同的文件系统上。
在主要版本 renameio/v2 中, renameio.WriteFile 更改了权限处理方式。在 2 版本之前,文件是以传递给函数的权限创建的,而忽略了 [umask](https://en.wikipedia.org/wiki/
暂无开放 Issues,或尚未同步最近议题。