C++ 删除所有文件和子文件夹但保留目录本身

Fra*_*ppy 3 c++ windows winapi delete-file

我需要删除临时文件夹中的所有内容。我知道我可以使用filesystem::remove_allfilesystem::remove_all_dir但这意味着程序也会删除临时文件夹本身,这当然不是我想要的。我找不到 C++ 的答案,所以如果你们能帮忙,那就太好了。

谢谢!

bor*_*vka 5

如果您可以使用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);
    }
}

Run Code Online (Sandbox Code Playgroud)


jwe*_*rek 5

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());
}
Run Code Online (Sandbox Code Playgroud)