我需要删除临时文件夹中的所有内容。我知道我可以使用filesystem::remove_all和filesystem::remove_all_dir,但这将意味着程序也将删除临时文件夹本身,这当然不是我想要的。我找不到C++的答案,所以如果你们能帮忙,那就太好了。谢谢你,谢谢
filesystem::remove_all
filesystem::remove_all_dir
whlutmcx1#
std::filesystem::remove_all( path )将递归删除path * 和 * 处的文件夹,如果path引用的是文件而不是目录,则将删除该文件。所以
std::filesystem::remove_all( path )
path
void deleteDirectoryContents(const std::filesystem::path& dir) { for (const auto& entry : std::filesystem::directory_iterator(dir)) std::filesystem::remove_all(entry.path()); }
字符串
33qvvth12#
如果可以使用std::filesystem,解决方案可能如下:
#include <filesystem> namespace fs = std::filesystem; void delete_dir_content(const fs::path& dir_path) { for (auto& path: fs::directory_iterator(dir_path)) { fs::remove_all(path); } }
t1rydlwq3#
我知道这个主题是针对Windows的,但我在寻找Unix的解决方案时发现了它。所以这里是Unix运行C++ 11和标准库的解决方案。基于this anwser:
#include <dirent.h> bool cleanDirectory(const std::string &path){ struct dirent *ent; DIR *dir = opendir(path.c_str()); if (dir != NULL) { /* remove all the files and directories within directory */ while ((ent = readdir(dir)) != NULL) { std::remove((path + ent->d_name).c_str()); } closedir (dir); } else { /* could not open directory */ return false; } return true; }
3条答案
按热度按时间whlutmcx1#
std::filesystem::remove_all( path )
将递归删除path
* 和 * 处的文件夹,如果path
引用的是文件而不是目录,则将删除该文件。所以
字符串
33qvvth12#
如果可以使用std::filesystem,解决方案可能如下:
字符串
t1rydlwq3#
我知道这个主题是针对Windows的,但我在寻找Unix的解决方案时发现了它。所以这里是Unix运行C++ 11和标准库的解决方案。基于this anwser:
字符串