gpt4 book ai didi

c++ - 在C++中设置文件夹中所有文件的权限

转载 作者:行者123 更新时间:2023-11-28 04:57:33 25 4
gpt4 key购买 nike

在 C++ 中是否有跨平台的方式递归设置文件夹内容的权限?

我不想依赖系统调用。

最佳答案

使用 C++17 及其 std::filesystem 将目录中的所有文件和文件夹授予 0777 的示例:

代码:

#include <exception>
//#include <filesystem>
#include <experimental/filesystem> // Use this for most compilers as of yet.

//namespace fs = std::filesystem;
namespace fs = std::experimental::filesystem; // Use this for most compilers as of yet.

int main()
{
fs::path directory = "change/permission/of/descendants";
for (auto& path : fs::recursive_directory_iterator(directory))
{
try {
fs::permissions(path, fs::perms::all); // Uses fs::perm_options::replace.
}
catch (std::exception& e) {
// Handle exception or use another overload of fs::permissions()
// with std::error_code.
}
}
}

如果例如fs::perm_options::add 而不是 fs::perm_options::replace 是需要的,那么这还不是跨平台的。 VS17 的 experimental/filesystem 不知道 fs::perm_options并将 addremove 包含为 fs::perms::add_permsfs::perms::remove_perms .这意味着 std::filesystem::permissions 的签名略有不同:

标准:

fs::permissions(path, fs::perms::all, fs::perm_options::add);

VS17:

fs::permissions(path, fs::perms::add_perms | fs::perms::all); // VS17.

关于c++ - 在C++中设置文件夹中所有文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46835440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com