bool b=false;
b=SHFileOperation(&op);
//int kkk= SHFileOperation(&op);
switch(GetLastError())
{
//只要出错就弹出
return false;
}
return(b);
}
//删除目录文件
//---------------------------------------------------------------------------
bool ZipAndFile::deldir(char* dir_fullpath) //删除指定的目录
{
char dir[260]={0};
char filename[260]={0};
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;
}
使用方法:包了头文件后:
[cpp]
ZipAndFile *TZipAndFile=new ZipAndFile();//新建对像
//删除temp文件夹
dir_fullpath=(ExePath+"web_back").c_str();//删除web原文件
if(TZipAndFile->deldir(dir_fullpath)) {}
delete TZipAndFile;// 删除对像
DLL下载地址:
DLL文件下载
http://up.2cto.com/2012/0331/20120331103552848.rar
DLL两个接口:
//压缩,bUtf8为false将支持路径与文件内包含中文
BOOL ZWZipCompress(LPCTSTR lpszSourceFiles, LPCTSTR lpszDestFile, bool bUtf8 = false);
//解压
BOOL ZWZipExtract(LPCTSTR lpszSourceFile, LPCTSTR lpszDestFolder);
摘自 破空的专栏