递归删除一个文件夹中的所有内容
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;
}
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;
}
相关文章推荐
- 递归 删除 某个文件夹 下所有的内容,包括子文件夹
- 递归删除一个文件夹下的所有文件c#代码
- 递归删除一个文件夹下的所有文件c#代码
- asp.net C# 中删除一个文件夹里的所有内容
- 递归调用删除文件夹及文件夹下所有内容
- 学习笔记 - java递归删除一个文件夹及里面的所有文件
- 递归的一些方法使用:深度遍历路径中的所有文件和目录,删除一个有文件的文件夹
- JAVA利用递归的方法删除一个文件夹以及文件夹下所有的子文件
- java单个文件复制,递归删除、复制目录下所有内容,递归创建文件夹,.7z文件解压等
- android典型代码系列(十二)------删除某个文件夹里面的所有内容(递归)
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
- Linux下PHP删除一个目录下所有文件夹和子目录
- java通过递归调用删除文件夹下所有文件
- c#将一个文件夹及其里面的所有内容(文件和文件夹)复制到指定路径
- 删除系统中的一个文件夹,及内容
- 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面
- 递归删除一个非空目录及其下所有文件和目录
- java 如何递归遍历一个文件夹下的所有文件
- 复制文件夹所有内容 和 删除整个文件夹的2个函数(原创)