回答
實施例用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. 更改文件夾,所有子文件夾和所有文件的權限
- 5. 遞歸地設置所有文件和文件夾的權限(Zend Framework 2)
- 6. 在Vista上設置文件夾權限
- 7. Powershell - 設置文件夾權限
- 8. 跨域設置文件夾權限
- 9. Django文件夾權限設置?
- 10. PowerShell設置文件夾權限
- 11. 如何設置文件夾權限
- 12. 在設置文件夾權限
- 13. 使用powershell設置文件夾權限
- 14. 如何設置文件夾權限?
- 15. 在magento中設置文件夾/文件的權限
- 16. 如何爲xampp htdocs文件夾中的文件設置權限?
- 17. 在C#中設置文件權限#
- 18. Linux的設置權限的文件夾和所有它的子文件或文件夾
- 19. 文件夾權限
- 20. 文件夾權限?
- 21. 文件夾權限
- 22. 文件夾權限
- 23. 如何授予使用c#的文件夾和子文件夾中的所有文件的讀取權限?
- 24. 用c中的所有者文件權限打開文件
- 25. ASP 3.0文件夾/文件權限設置
- 26. 不使用SSH設置文件夾和文件權限
- 27. 創建文件夾/文件並設置權限
- 28. 設置文件權限
- 29. C#將文件複製到具有權限的文件夾
- 30. 重置WordPress的所有文件和文件夾,它的默認權限
[Qt的](https://www.qt.io)具有類,可以幫助你。 –
非*所有*平臺都支持文件夾,尤其是嵌入式系統區域中的文件夾。 –