怎么样删除非空文件夹?
怎么用findfirstfile和findnextfile来删除非空文件夹呢? 问题点数:20、回复次数:4Top
1 楼XBox360(菜)(鸟)回复于 2006-02-14 15:16:33 得分 20
递归先删除里面所有文件
然后删除空文件夹
bool DeleteDirectoryEx(const AnsiString &P)
{
if(P.IsEmpty() || P.Length()<4)
return false; // 参数长度必须大于3,即不能为磁盘根目录或空白
int len=P.Length();
char *Path=P.c_str();
AnsiString Dir=Path;
if(Path[len-1]!='\\')
Dir=Dir+'\\';
AnsiString Files=Dir + "*.*";
WIN32_FIND_DATA wfd;
HANDLE hFind=FindFirstFile(Files.c_str(),&wfd);
bool Ret=true;
AnsiString Tmp;
if (hFind!=INVALID_HANDLE_VALUE)
{
bool bFind=true;
while (bFind)
{
if(wfd.cFileName[0]!='.') // . ..
{
Tmp = Dir + wfd.cFileName;
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{ // 递归删除所有子目录
Ret = Ret && DeleteDirectoryEx(Tmp.c_str());
}
else
{ // 删除所有文件
// 属性设置为Normal
SetFileAttributes(Tmp.c_str(),FILE_ATTRIBUTE_NORMAL);
Ret = Ret && DeleteFile(Tmp.c_str());
}
}
bFind = FindNextFile(hFind,&wfd);
}
FindClose(hFind);
}
if (Ret)
return RemoveDirectory(Path);
return false;
}Top
2 楼guyujie()回复于 2006-02-14 15:35:55 得分 0
if(P.IsEmpty() || P.Length()<4)
return false;
为什么是 参数长度必须大于3,即不能为磁盘根目录或空白
不懂??请教?
Top
3 楼guyujie()回复于 2006-02-14 15:51:50 得分 0
findfirstfile()找到的到底是要删除的那个文件夹还是文件夹下的文件或文件夹?Top
4 楼guyujie()回复于 2006-02-14 16:47:41 得分 0
if(wfd.cFileName[0]!='.') // . ..
这句是什么意思?Top




