C++删除文件夹及其子文件夹中的文件功能实现(Unicode)

删除操作的功能实现函数

bool DeleteEntireDir(const TCHAR * sPath,bool bDelDir/*=true*/)
{
	CFileFind ff;  
	BOOL bFound;  
	bFound = ff.FindFile(CString(sPath) + "\\*.*");  
	while(bFound)  
	{  
		bFound = ff.FindNextFile();  
		CString sFilePath = ff.GetFilePath();  

		if(ff.IsDirectory())  
		{  
			if(!ff.IsDots())  
			{  
				DeleteEntireDir(sFilePath);  
			}  
		}  
		else  
		{  
			if(ff.IsReadOnly())  
			{  
				SetFileAttributes(sFilePath, FILE_ATTRIBUTE_NORMAL);  
			}  
			DeleteFile(sFilePath);  
		}  
	}  
	ff.Close();  

	if (bDelDir)
	{
		SetFileAttributes(sPath, FILE_ATTRIBUTE_NORMAL);  //设置文件夹的属性  
		RemoveDirectory(sPath);
	}

	return true;
}
</pre><pre code_snippet_id="1621907" snippet_file_name="blog_20160324_1_6664431" name="code" class="cpp">以文件夹路径作为函数的输入参数,封装上面的函数,
 
 
<span style="font-family: Arial, Helvetica, sans-serif;">bool DeleteFolder(const TCHAR* pszFolderPath)</span>
{
	if(_waccess(pszFolderPath,0)==0)  
	{
		if(!DeleteEntireDir(pszFolderPath))
		{
			return false;
		}
	} 

	return true;
}
 
 
最后直接调用函数DeleteFolder就可以了。这里的输入参数是文件夹的路径。 
 
 

你可能感兴趣的:(C++删除文件夹及其子文件夹中的文件功能实现(Unicode))