回答
实施例用C++ 17及其std::filesystem
授予0777到目录中的所有文件和文件夹:
std::filesystem::recursive_directory_iterator()
迭代 通过目录std::filesystem::permissions
设置权限的每个文件std::filesystem::perms
来决定,其权限应设置
代码:
#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
,并且包括add
和remove
作为fs::perms::add_perms
和fs::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.
你有没有考虑过boost:文件系统? – drescherjm
既然你提到这个Visual Studio的不兼容性,这是为了答案,或者你在寻找其他答案,这个材料应该是在问题? – drescherjm
@drescherjm我选择这个作为答案,因为只要'perm_options'没有手动设置,它就会工作。然而,第二部分的b/c确实也适用于这个问题。对不起,我在创建问题时没有看到。 –
- 1. 递归地设置所有文件和文件夹的权限
- 2. 维克斯:如何设置文件夹的权限和所有子文件夹
- 3. 为Wix设置文件夹和所有子文件夹的权限
- 4. PowerShell设置文件夹权限
- 5. Django文件夹权限设置?
- 6. 在Vista上设置文件夹权限
- 7. 如何设置文件夹权限
- 8. 如何为xampp htdocs文件夹中的文件设置权限?
- 9. 在C#中设置文件权限#
- 10. 文件夹权限?
- 11. 文件夹权限
- 12. 文件夹权限
- 13. 文件夹权限
- 14. 如何授予使用c#的文件夹和子文件夹中的所有文件的读取权限?
- 15. ASP 3.0文件夹/文件权限设置
- 16. 不使用SSH设置文件夹和文件权限
- 17. 创建文件夹/文件并设置权限
- 18. 设置文件权限
- 19. C#将文件复制到具有权限的文件夹
- 20. 如何在C++中打开文件时设置文件权限?
- 21. 公用文件夹删除所有用户的所有权限
- 22. 如何设置没有访问cPanel的文件夹权限
- 23. 如何在C编程设置文件夹权限#
- 24. 为我的程序文件夹的所有用户设置写入权限
- 25. C#应用程序中的文件和文件夹权限
- 26. 设置共享基于安全权限的共享中共享所有文件夹的权限
- 27. FPSE,文件夹权限和SharePoint设计
- 28. 使用mercurial设置文件所有权
- 29. C#存储文件夹权限
- 30. 更改文件权限所有权
[Qt的](https://www.qt.io)具有类,可以帮助你。 –
非*所有*平台都支持文件夹,尤其是嵌入式系统区域中的文件夹。 –