关闭

删除整个目录文件

标签: filenull磁盘c
814人阅读 评论(0) 收藏 举报
分类:
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");
	}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:445317次
    • 积分:4404
    • 等级:
    • 排名:第6751名
    • 原创:100篇
    • 转载:20篇
    • 译文:0篇
    • 评论:39条
    文章分类
    最新评论