之前会碰到一些,比如打开文件夹下的一个子文件会导致子文件夹及外层文件夹删除不完全;
或者文件夹下文件及目录都删掉了,但是本身文件没删掉
后来在之前的基础上修改,亲测没问题
void clearDir(Qlist<Qstring> dir_list)
{
if(dir_list.size()<=0)
{
return;
}
for(int i=0;i<dir_list.size();i++)
{
Qstring current_dir=die_list.at(i);
QDir Dir(current_dir);
if(!Dir.isEmpty())
{
continue;
}
QDirTterator DirsIterator(current_dir,QDir::Files | QDir::AllDirs |
QDir::NotAndDotDot,QDirTterator::NoIteratorFlags);
while(DirsIterator.hasNext())
{
if(!Dir.remove(DirsIterator.next()))
{
QString file_path=DirsIterator.filePath();
QDir(DirsIterator.filePath()).removeRecursively();
}
}
Dir.removeRecursively();
}
}
void deleteFiles(const Qstring& temp_path,QStringList namefilters)
{
QDir work_dir(temp_path);
if(work_dir.exists())
{
QFileInfoList fileInfos=work_dir.entryInfoList(namefilters,QDir::Files |
QDir::Readable);
if(fileInfos.size()>0)
{
for(int i=0;i<fileInfos.size();i++)
{
QString curent_file=fileInfos.at(i).absoluteFilePath();
if(QFile::exists(curent_file))
{
QFile::remove(curent_file);
}
}
}
}
}