龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

获取文件夹大小的函数-已在VC验证

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//Get size of a whole dir //return bytes 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(szF

//Get size of a whole dir
//return bytes
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;
}

精彩图集

赞助商链接