如何避免使用Boost Libraries删除remove_all上的目录?

San*_*ero 14 c++ boost boost-filesystem

我正在使用boost :: filesystem :: remove_all操作来删除目录的内容.

它正确删除了内容,但是,作为Boost Filesystem Documentation的状态,它也会删除目录本身.

有没有一个简单的方法来保持目录,尽管它是空的?

J. *_*eja 22

我认为最好的方法是在文件夹内迭代并为每个元素执行remove_all.示例代码:

  namespace fs=boost::filesystem;
  fs::path path_to_remove("C:\\DirectoryToRemove");
  for (fs::directory_iterator end_dir_it, it(path_to_remove); it!=end_dir_it; ++it) {
    fs::remove_all(it->path());
  }
Run Code Online (Sandbox Code Playgroud)

  • @ BriceM.Dempsey当删除引用的元素时,文档没有说明迭代器是无效的.我发现[此信息](http://stackoverflow.com/a/18388359/218774)表明迭代删除内容似乎是官方支持的用例.请注意,任何文件都可以随时从外部删除,因此仅仅因为这个原因使迭代器失效是非常危险的. (2认同)