提问人:Joe 提问时间:4/9/2022 最后编辑:Joe 更新时间:4/9/2022 访问量:2708
如何使用 std::filesystem 查看我是否具有写入权限?
How do I use std::filesystem to see if I have write access?
问:
我想用它来查询分配给我的函数的磁盘文件夹路径。我想知道我是否具有对该文件夹的写入权限。但是我想在不实际尝试写入文件夹的情况下做到这一点。std::filesystem
最后一个要求部分是因为
- a) 我不想更改文件系统在文件夹上的上次写入时间
- b) 如果可能的话,我想学习如何通过以某种独立于平台的方式查询文件系统来做到这一点
看起来 std::filesystem::status()
是我想要的函数。但是,该函数返回的权限标志包括 、 和 。owner_write
group_write
others_write
我如何判断哪些适用于我?我不知道我的应用程序/用户是所有者、组还是“其他”。有某种功能在某个地方踢来踢去吗?can_i_write_to_this_folder()
我能找到的唯一与此相关的线程没有涉及的答案<filesystem>
[编辑]人们似乎认为我在寻找一些不切实际的可写性保证。我不是。我并不认为任何文件系统函数都是万无一失的。我不会将某些关键任务系统建立在这个决定的基础上
当过来给我们所有和其他好东西时,他们宣传的目的很有用。因此,当我发现这是真的时,我评估了它们并使用了它们。就像我为参数包和许多其他东西所做的那样。我想我们都同意,这些年来增加了一些东西,但被证明不是那么好。<filesystem>
directory_iterator
std::atomic<>
std::variant
现在,该库宣传了此功能,旨在告诉我们(除其他外)文件或文件夹的权限。我想知道这个“访问”信息是否有任何实际用途。filesystem::status()
人们的共识似乎是事实并非如此。
答: 暂无答案
上一个:使用文本文件中的数据的符号导向图
下一个:新emplace_back签名
评论
std::filesystem::error
访问
。这比所依赖的基础调用执行更有用的检查,至少如果失败,您可以检查。它非常便携,甚至 Windows 也有它(尽管不幸的是他们已经重命名了它),那么为什么不呢?stat
std::filesystem::status
errno
access
_access