在文件系统路径处自动创建文件

发布于 2025-01-10 11:22:14 字数 487 浏览 0 评论 0原文

即使路径中的中间元素不存在,原子在路径中创建文件的惯用方法是什么?

例如,给定一个如下所示的目录,

$ tree one
one
├── two
└── three

我想以原子方式将字符串写入路径“一/四/五/六”处的文件。

在这种情况下,我所说的“原子”是指——如果写入失败,我不希望路径 one/four 存在。如果写入成功,我希望整个路径 one/four/ Five/six 有效并具有我写入的字符串。我关心写入后的持久性保证,所以我关心“如果写入成功,那么文件必须存在于给定路径,即使在发生电源故障”。

寻找标准 C++ 中的实现(因此使用 std::filesystemofstream 的任何内容都很好,但不是必需的,如果必须的话,我可以使用常规 POSIX API )。

What is the idiomatic way to atomically create a file at a path, even if intermediate elements in the path do not exist?

For example, given a directory that looks like this

$ tree one
one
├── two
└── three

I want to write a string to the file at path "one/four/five/six" atomically.

In this context, by "atomic" I mean -- if the write fails, I don't want the path one/four to exist. If the write succeeds, I want the whole path one/four/five/six to be valid and have the string that I wrote to it. I do not care about a durability guarantee after the write, so I do not care about "if the write succeeds, then the file must be present at the given path even in the event of a power failure".

Looking for an implementation in standard C++ (so anything using std::filesystem or ofstream would be nice, but not required, I can use the regular POSIX API if I have to).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文