MFC 删除非空文件夹

BOOL DeleteDirectory(LPCTSTR lpszDir)
{
 if (NULL == lpszDir || L'\0' == lpszDir[0])
 {
  return FALSE;
 }
 WIN32_FIND_DATA wfd = {0};
 TCHAR szFile[MAX_PATH] = {0};
 TCHAR szDelDir[MAX_PATH] = {0};
 lstrcpy(szDelDir, lpszDir);
 if (lpszDir[lstrlen(lpszDir) - 1] != L'\\')
 {
  _snwprintf(szDelDir, _countof(szDelDir) - 1, TEXT("%s\\"), lpszDir);
 }
 else
 {
  wcsncpy(szDelDir, lpszDir, _countof(szDelDir) - 1);
 }
 _snwprintf(szFile, _countof(szFile) - 1, TEXT("%s*.*"), szDelDir);
 HANDLE hFindFile = FindFirstFile(szFile, &wfd);
 if (INVALID_HANDLE_VALUE == hFindFile)
 {
  return FALSE;
 }
 do
 {
  if (lstrcmpi(wfd.cFileName, TEXT(".")) == 0 || lstrcmpi(wfd.cFileName, TEXT("..")) == 0)
  {
   continue;
  }
  _snwprintf(szFile, _countof(szFile) - 1, TEXT("%s%s"), szDelDir, wfd.cFileName);
  if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
  {
   DeleteDirectory(szFile);
  }
  else
  {
   DeleteFile(szFile);
  }
 } while (FindNextFile(hFindFile, &wfd));
 FindClose(hFindFile);
 RemoveDirectory(szDelDir);
 return TRUE;
}

你可能感兴趣的:(MFC 删除非空文件夹)