【路径相关方法】4,计算文件夹大小
2014-01-28 12:56
232 查看
1,原理
与前文一样,使用FindFirstFile和FindNextFile 遍历文件夹,通过把所有文件大小相加,得到总大小。2,实现
32位无符号整数,能表示的大小为:2^32-1 = 4294967295 字节即4GB。那么大于4GB的得用64位整数表示了,这里用DWORD64,即无符号64位整数。
DWORD64 GetFolderSize(WCHAR* szPath) { DWORD64 dwSize = 0; //拷贝一份局部路径 WCHAR szFilePath[MAX_PATH] = {0}; wcscpy_s(szFilePath,MAX_PATH,szPath); //要查找的所有文件的通配符 WCHAR szFileFilter[MAX_PATH] = {0}; wcscpy_s(szFileFilter,MAX_PATH,szFilePath); wcscat_s(szFileFilter,MAX_PATH,L"\\*.*"); WIN32_FIND_DATA fileinfo; HANDLE hFind = NULL; hFind = FindFirstFile(szFileFilter,&fileinfo); do { if(fileinfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if ((0 != wcscmp(fileinfo.cFileName,L".")) && (0 != wcscmp(fileinfo.cFileName,L".."))) { //除了"."和".."的文件夹,递归求文件夹大小相加 wcscat_s(szFilePath,MAX_PATH,fileinfo.cFileName); dwSize += GetFolderSize(szFilePath); } } else { //是文件,直接加上大小 DWORD64 dwFileSize = ((DWORD64)(fileinfo.nFileSizeHigh) * (MAXDWORD+1)) + (DWORD64)(fileinfo.nFileSizeLow); dwSize += dwFileSize; } }while(FindNextFile(hFind,&fileinfo)); FindClose(hFind); return dwSize; }
相关文章推荐
- 【路径相关方法】5,清空删除文件夹
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- php对文件夹进行相关操作(遍历、计算大小)
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- Python简单计算文件夹大小的方法
- 计算缓存,某个文件夹和某个文件大小的方法
- android获取、计算文件夹和文件大小的方法
- 键盘录入一个文件夹路径,可以计算文件夹大小
- 【路径相关方法】2,判断文件夹是否为空
- 【路径相关方法】3,判断某路径的文件和文件夹是否存在
- 【路径相关方法】6,判断一个字符串是否为一个文件夹路径形式(无论存在与否)
- Python简单计算文件夹大小的方法
- 计算文件夹大小两种方法
- php对文件夹进行相关操作(遍历、计算大小)
- Android 获取SD路径,存储空间大小的方法
- 如何MFC实现计算一个文件夹的大小
- 关键路径计算方法
- Go实战--golang中文件以及文件夹路径相关操作
- web工程中和路径资源相关的方法及测试
- 计算占用内存大小的方法