您的位置:首页 > 其它

递归删除一个文件夹中的所有内容

2012-11-21 12:32 393 查看
记录一下,说不定以后会再用到。这是在Qt下写的,以后有机会再改成C++通用的。

bool RemoveDir::removeDirContent(const QString & dirpath)

{

QFileInfoList filelists;

QFileInfo Curfile;

QDir dir(dirpath);

if(!dir.exists())

{

return false;//文件不存,则返回false

}

if (dir.rmdir(dirpath)) //如果文件为空

{

return true;

}

filelists=dir.entryInfoList(QDir::Dirs|QDir::Files

|QDir::Readable|QDir::Writable

|QDir::Hidden|QDir::NoDotAndDotDot

,QDir::Name);

while(filelists.size() > 0) //递归出口条件

{

int fileSum = filelists.size();

for (int i = fileSum - 1; i >= 0; i--)

{

Curfile = filelists[i];

if (Curfile.isFile()) //如果是文件则删除

{

QFile fileTmep(Curfile.filePath());

fileTmep.remove();

filelists.removeAt(i);

}

else

{

QString path = Curfile.filePath();

QDir CurDir(path);

if (!CurDir.rmdir(path)) //如果是文件夹且当前文件夹不为空,递归调用

{

removeDirContent(path);

CurDir.rmdir(path); //递归删除文件内容后,删除本文件夹

filelists.removeAt(i); //删除记录

}

}

}

}

if (!dir.rmdir(dirpath)) //递归删除文件内容后,删除本文件夹

{

return false;

}

return true;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐