如何使用 std::filesystem 来查看我是否具有写访问权限?

Joe*_*Joe 6 c++ std c++17 std-filesystem

我想用来std::filesystem查询提供给我的函数的磁盘文件夹路径。我想知道我是否有该文件夹的写入权限。但我想在不实际尝试写入文件夹的情况下执行此操作。

最后一个要求部分是因为

  • a) 我不想更改文件夹上文件系统的上次写入时间
  • b)如果可能的话,我想学习如何仅通过以某种独立于平台的方式查询文件系统来做到这一点

看来这std::filesystem::status()就是我想要的功能。然而,该函数返回的权限标志包括owner_writegroup_writeothers_write

我如何知道其中哪一个适用于我?我不知道我的应用程序/用户是所有者、组还是“其他”。can_i_write_to_this_folder()某处是否有某种功能正在运行?

我能找到的唯一与此相关的线程没有涉及的答案<filesystem>

[编辑] 人们似乎认为我正在寻找一些不切实际的可写性保证。我不是。我并不认为任何文件系统功能都是万无一失的。我不会将某些关键任务系统建立在这个决定的基础上

<filesystem>他们过来给我们所有的东西directory_iterator和其他好东西时,他们所宣传的目的是有用的。所以当我发现这是真的时,我评估了它们并使用了它们。就像我对std::atomic<>参数包和std::variant许多其他东西所做的那样。我想我们都同意,多年来添加了一些东西,但事实证明并不是那么好。

现在,该库宣传了此功能,filesystem::status()旨在告诉我们(除其他外)文件或文件夹的权限。我想知道这个“访问”信息是否有任何实际用途。

共识似乎是事实并非如此。