【问题标题】:C++ Delete all files and subfolders but keep the directory itselfC++ 删除所有文件和子文件夹,但保留目录本身
【发布时间】:2019-11-27 19:59:54
【问题描述】:

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

谢谢!

【问题讨论】:

  • 使用directory_iterator并自己删除内容(在文件夹的每个成员上调用remove_all),或删除整个内容然后重新创建文件夹。

标签: c++ windows winapi delete-file


【解决方案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);
        }
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 2018-06-07
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多