VC通过WIN32_FIND_DATA和FindFirstFile获取文件夹大小代码

DWORD64 GetFolderSize(LPCTSTR szPath, DWORD *dwFiles, DWORD *dwFolders)
{
TCHAR szFileFilter[512];
TCHAR szFilePath[512];
HANDLE hFind = NULL;
WIN32_FIND_DATA fileinfo;
DWORD64    dwSize = 0;

strcpy(szFilePath,szPath);
strcat(szFilePath,"");
strcpy(szFileFilter,szFilePath);
strcat(szFileFilter,"*.*");


hFind = FindFirstFile(szFileFilter,&fileinfo);
do
{
   if(fileinfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
   {
    if (!strcmp(fileinfo.cFileName,".") || !strcmp(fileinfo.cFileName,".."))
    {
     //Do nothing for "." and ".." folders
    }
    else
    {
     TCHAR sztmp[512];
     strcpy(sztmp,szFilePath);
     strcat(sztmp,fileinfo.cFileName);
     dwSize = dwSize + GetFolderSize(sztmp);
     if(dwFolders != NULL)
     {
      ++(*dwFolders);
     }
    }
   }
   else
   {
    if(dwFiles != NULL)
    {
     ++(*dwFiles);
    }
   }


   dwSize += fileinfo.nFileSizeLow;

}while(FindNextFile(hFind,&fileinfo));

FindClose(hFind);
return dwSize;
}


你可能感兴趣的:(文件夹)