前言
一个简单的算法接口封装,功能是将文件夹下所有文件删除(文件/目录),实现逻辑是通过循环的方式,一只遍历该目录下的文件类型,根据不同的文件类型来决定如何删除。
正文
来看看源码,接口已封装好,直接拿来用就好
bool ALUtility::removeFolderContent(const QString &folderDir)
{
QDir dir(folderDir);
QFileInfoList fileList;
QFileInfo curFile;
if(!dir.exists()) {return false;}//文件不存,则返回false
fileList=dir.entryInfoList(QDir::Dirs|QDir::Files
|QDir::Readable|QDir::Writable
|QDir::Hidden|QDir::NoDotAndDotDot
,QDir::Name);
while(fileList.size()>0)
{
int infoNum=fileList.size();
for(int i=infoNum-1;i>=0;i--)
{
curFile=fileList[i];
if(curFile.isFile())//如果是文件,删除文件
{
QFile fileTemp(curFile.filePath());
fileTemp.remove();
fileList.removeAt(i);
}
if(curFile.isDir())//如果是文件夹
{
QDir dirTemp(curFile.filePath());
QFileInfoList fileList1=dirTemp.entryInfoList(QDir::Dirs|QDir::Files
|QDir::Readable|QDir::Writable
|QDir::Hidden|QDir::NoDotAndDotDot
,QDir::Name);
if(fileList1.size()==0)//下层没有文件或文件夹
{
dirTemp.rmdir(".");
fileList.removeAt(i);
}
else//下层有文件夹或文件
{
for(int j=0;j<fileList1.size();j++)
{
if(!(fileList.contains(fileList1[j])))
fileList.append(fileList1[j]);
}
}
}
}
}
return true;
}
了。