wince的实现不支持CFileFind 使用FindFirstFile FindNextFile实现
BOOL DeleteDirectory_R(LPCTSTR psDirName)
{}
CFileFind 的实现
BOOL DeleteDirectory_R(LPCTSTR psDirName)
{
CFileFind tempFind;
TCHAR sTempFileFind[ _MAX_PATH ] = { 0 };
_stprintf(sTempFileFind, L"%s\\*.*",psDirName);
BOOL IsFinded = tempFind.FindFile(sTempFileFind);
while (IsFinded)
{
IsFinded = tempFind.FindNextFile();
if (!tempFind.IsDots())
{
TCHAR sFoundFileName[ _MAX_PATH ] = { 0 };
_tcscpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200));
if (tempFind.IsDirectory())
{
TCHAR sTempDir[ _MAX_PATH ] = { 0 };
_stprintf(sTempDir, L"%s\\%s",psDirName,sFoundFileName);
DeleteDirectory_R(sTempDir);
}
else
{
TCHAR sTempFileName[ _MAX_PATH ] = { 0 };
_stprintf(sTempFileName, L"%s\\%s",psDirName,sFoundFileName);
RemoveFileReadOnlyAttr(sTempFileName);
DeleteFile(sTempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(psDirName))
{
return FALSE;
}
return TRUE;
}
去除文件只读属性
BOOL RemoveFileReadOnlyAttr(LPCTSTR pFilePath)
{
ASSERT(NULL != pFilePath);
DWORD dwAttr = GetFileAttributes(pFilePath);
if (0xFFFFFFFF == dwAttr)
{
return FALSE;
}
if (dwAttr & FILE_ATTRIBUTE_READONLY)
{
dwAttr &= ~FILE_ATTRIBUTE_READONLY;
SetFileAttributes(pFilePath, dwAttr);
}
return TRUE;
}