一、 获得文件夹下的所有文件路径


void GetAllPath(const string& sSrcPath, vector<string>& vtPath)
{
struct _finddata_t fileinfo;
long lHandle = -1;
int iFind = 0;

string sFile = sSrcPath + "\\*.*";
lHandle = _findfirst(sFile.c_str(), &fileinfo);

if (lHandle != -1)
{
iFind = _findnext(lHandle, &fileinfo);

while (!iFind)
{
if (fileinfo.name[0]!='.'&& (fileinfo.attrib&_A_SUBDIR))
{
string sTemp;
sTemp = sSrcPath + "\\" + fileinfo.name;
GetAllPath(sTemp, vtPath);
}

iFind = _findnext(lHandle, &fileinfo);
}

vtPath.push_back(sSrcPath);
}

_findclose(lHandle);
}


二、 

删除指定类型文件


BOOL DeleteFileExByFileExt(const char * pszPath, const char * pszExt)
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,pszPath);
strcat(szFind,"\\*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return false;
int nkey=0;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFind,pszPath);
strcat(szFind,"\\");
strcat(szFind,FindFileData.cFileName);
DeleteFileByFileExt(szFind,pszExt);
}
}
else
{
string strFile = FindFileData.cFileName;
if (strFile.find(pszExt) != -1)
{
strcpy(szFind,pszPath);
strcat(szFind,"\\");
strcat(szFind,FindFileData.cFileName);
DeleteFile(szFind);
}
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
return true;
}


三、 

删除文件夹下所有文件


BOOL RemoveAllFile(CString strPath)
{
CFileFind ff;
BOOL bFind = ff.FindFile(strPath+"\\*.*");
while(bFind)
{
bFind = ff.FindNextFile();

if(ff.IsDots()) continue;
if(ff.IsDirectory())
{
RemoveAllFile(ff.GetFilePath());
RemoveDirectory(ff.GetFilePath());
}
else
{
CFile::Remove(ff.GetFilePath());
}
}
RemoveDirectory(strPath);
return TRUE;
}