如何以阻止的方式删除文件/文件夹
How to delete file/folder in a blocking way?
我正在寻找一种方法来阻止线程,直到它成功地使用boost文件系统删除文件夹。
如果文件夹中包含一个正在使用的文件,则只有在文件被释放并成功删除后,文件夹才会阻止并继续。
使用boost文件系统操作remove_all()
应该可以正常地为您完成这项工作。
我猜你指的是这样一个问题,即当单个文件由于并发访问而无法删除时,此操作可能会引发异常或返回错误,而不是等待。您可以简单地通过捕获异常来解决这个问题,并将try/catch块放入一个循环中,该循环一直运行到整个操作完成而没有任何错误或异常:
boost::filesystem::path dirToRemove("SomeDirectoryToRemove");
bool completed = false;
while(!completed)
{
try
{
boost::filesystem::remove_all(dirToRemove);
completed = true;
}
catch(...)
{
// put a sleep() call or other blocking operation here, to give other
// threads a chance to run, while this one waits to get rid of the error
// condition.
}
}
相关文章:
- 如何在输入新内容 c++ 之前删除文件中的所有内容
- 文件模式标志"ios::app"是否用于删除文件(如果文件已存在)?
- 查找并删除文件 C++ 中的整行
- 如何删除文件中的数字,通过 c++ fstream 的
- 以编程方式防止重命名或删除文件,但仍使其可写
- C++ 如何使用_rmdir删除文件?
- 关于从驱动器中删除文件的问题
- Linux 从永远在线的应用程序中创建和删除文件
- 用户使用C++中的删除功能删除文件
- 如何在C++中删除文件中的一部分文本
- 我可以删除 *.o文件(代码:: blocks)
- 为什么std ::删除文件始终返回-1
- C++ 使用数字删除文件 io 行
- 如何使用 c++ 删除文件夹及其内容
- 如何在 C++ 中的文件处理中删除文件
- 用数字删除文件
- Cygwin:打开句柄时删除文件
- 接收文件并删除文件中的重复项
- 删除文件 C++ 中字符串中最后一个出现的字符
- 在循环内删除文件时使提升recursive_directory_iterator无效