bool deldir(char* dir_fullpath) //删除指定的目录
{
char dir[260];
char filename[260];
int len = 0;
int ch = '\\';
strcpy(dir, dir_fullpath);
len = strlen(dir);
char *temp = strrchr(dir,ch);
if(len < 4 || temp == NULL) //可能为磁盘根目录或者不是有效的目录路径
return false;
if(temp != NULL)
{
if((temp - dir + 1) != len) //在目录后添加 '\'
strcat(dir,"\\");
}
GetCurrentDirectory(260,filename);
strcat(filename,"\\");
if(strcmp(dir,filename)==0) //如果要删除的目录是当前目录
{
strcat(filename,"..");
SetCurrentDirectory(filename); //改变当前目录
}
WIN32_FIND_DATA finddata;
HANDLE fFile;
bool flag;
strcpy(filename,dir);
strcat(filename,"*.*");
fFile=FindFirstFile(filename,&finddata);
flag=true;
if(fFile!=INVALID_HANDLE_VALUE) //此目录不是空目录
{
BOOL bfind=true;
while(bfind)
{
if(finddata.cFileName[0] != '.')
{
strcpy(filename,dir);
strcat(filename,finddata.cFileName);
if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{ //删除找到的子目录
strcat(filename,"\\");
flag = flag && deldir(filename);
}
else
{ //删除找到的文件
SetFileAttributes(filename,FILE_ATTRIBUTE_NORMAL);
flag = flag && DeleteFile(filename);
}
}
bfind = FindNextFile(fFile,&finddata);
}
FindClose(fFile);
}
if(flag)
{
SetFileAttributes(dir_fullpath,FILE_ATTRIBUTE_NORMAL);
if(RemoveDirectory(dir_fullpath))
return true;
}
return false;
}
调用:
char *dir_fullpath="C:\\zip中文\\2";
if(deldir(dir_fullpath))
{
ShowMessage("OK");
}