C++ 删除所有文件和子文件夹,但保留目录本身
Posted
技术标签:
【中文标题】C++ 删除所有文件和子文件夹,但保留目录本身【英文标题】:C++ Delete all files and subfolders but keep the directory itself 【发布时间】:2019-11-27 19:59:54 【问题描述】:我需要删除临时文件夹中的所有内容。我知道我可以使用filesystem::remove_all
和filesystem::remove_all_dir
,但这意味着程序也会删除临时文件夹本身,这当然不是我想要的。我找不到 C++ 的答案,所以如果你们能提供帮助,那就太好了。
谢谢!
【问题讨论】:
使用directory_iterator
并自己删除内容(在文件夹的每个成员上调用remove_all
),或删除整个内容然后重新创建文件夹。
【参考方案1】:
std::filesystem::remove_all( path )
将递归删除path
处的文件夹并且如果path
指的是文件而不是目录,它将删除该文件。
所以
void deleteDirectoryContents(const std::string& dir_path)
for (const auto& entry : std::filesystem::directory_iterator(dir_path))
std::filesystem::remove_all(entry.path());
【讨论】:
【参考方案2】:如果您可以使用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);
【讨论】:
以上是关于C++ 删除所有文件和子文件夹,但保留目录本身的主要内容,如果未能解决你的问题,请参考以下文章
linux面试题:删除一个目录下的所有文件,但保留一个指定文件