windows下,双线程删除非空目录。
适用场景:一个目录下有很多子目录,子目录又有子目录或者文件的。其他场景自行查看和修改源码。
由于windows自带的删除文件效率不满足需求,而且经常卡死explorer,所以自己写了个双线程删除的,效率实测还可以。
代码比较简单,原理: 1.遍历指定目录的下的文件和文件夹。 2.将该目录下的文件放入一个队列(std::deque),将文件夹放入另一个队列(std::deque)。 3.创建线程同时从队列的头和尾部取数据。 4.对于文件夹队列,取到的数据进行递归去删除文件和文件夹。 5.对于文件队列,取到的数据直接删除。
如果使用过程中发现问题,欢迎提issue和 pull request