删除整个目录文件

原创 2012年03月28日 17:24:07
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");
	}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JAVA处理文件(新建目录,新建文件,删除文件,删除文件夹,删除文件夹里面的所有文件,复制单个文件复制整个文件夹内容)

包括: 新建目录,新建文件,删除文件,删除文件夹,删除文件夹里面的所有文件, 复制单个文件,复制整个文件夹内容,移动文件到指定目录 package  common;    ...

linux下wget如何下载整个网站,或者特定目录全部文件

需要下载某个目录下面的所有文件。命令如下 wget -c -r -np -k -L -p www.xxx.org/pub/path/ 在下载时。有用到外部域名的图片或连接。如果需要同时下载就要用-...

D_D系统构建-MBR(8)filesystem.inc代码整改适配32位(附提供当前整个开发目录文件)

上几篇我们已经可以通过mbr加载loader文件,并能成功执行loader指令。 下面计划是要扩展我们的loader文件,来进入保护模式的,在保护模式中加载kernel文件,自然想复用我们已经有的fi...

使用“递归方法”对整个目录进行删除操作

我在最近的工作中,由于实际的工作内容的需要,最近使用递归方法非常频繁。 比如,在对整个非空目录进行删除操作的时候,往往调用boolean bool = file.delete();方法是不能够成功的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)