计算文件夹大小两种方法
来源:互联网 发布:java短信发送接口开发 编辑:程序博客网 时间:2024/05/19 04:06
方法一:利用CFileFInd类递归出每个文件的大小然后求和
CFileFind ff;
CString szDir = strDir;
if(szDir.Right(1) != _T("//"))
{
szDir += _T("//");
}
szDir += _T("*.*");
BOOL res = ff.FindFile(szDir);
while(res)
{
res = ff.FindNextFile();
if(ff.IsDirectory() && !ff.IsDots())
{
BrowseDir(ff.GetFilePath());
}
else if(!ff.IsDirectory() && !ff.IsDots())
{
CFileStatus rStatus;
if(CFile::GetStatus(ff.GetFilePath(), rStatus))
{
m_size += rStatus.m_size;
}
}
}
ff.Close();
方法二:API函数finefirstfile递归,这种方法返回的是DWORD64类型双字可以用_i64toa()函数转换成字符串
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;
}
CFileFind ff;
CString szDir = strDir;
if(szDir.Right(1) != _T("//"))
{
szDir += _T("//");
}
szDir += _T("*.*");
BOOL res = ff.FindFile(szDir);
while(res)
{
res = ff.FindNextFile();
if(ff.IsDirectory() && !ff.IsDots())
{
BrowseDir(ff.GetFilePath());
}
else if(!ff.IsDirectory() && !ff.IsDots())
{
CFileStatus rStatus;
if(CFile::GetStatus(ff.GetFilePath(), rStatus))
{
m_size += rStatus.m_size;
}
}
}
ff.Close();
方法二:API函数finefirstfile递归,这种方法返回的是DWORD64类型双字可以用_i64toa()函数转换成字符串
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;
}
- 计算文件夹大小两种方法
- 两种计算Java对象大小的方法
- 【路径相关方法】4,计算文件夹大小
- 计算文件夹的大小
- 计算文件夹大小
- 计算本地文件夹大小
- PHP计算文件夹大小
- 计算文件夹大小
- Java 计算文件夹大小
- 两种文件夹加密方法
- 聊聊JVM(三)两种计算Java对象大小的方法
- VC如何计算文件夹大小
- 计算文件夹得大小和遍历文件夹
- java遍历文件夹的两种方法
- 遍历文件夹的两种方法
- Java遍历文件夹的两种方法
- 获取手机屏幕大小的两种方法
- 两种方法测试大小端
- 大连软交会见闻录(1):穿马甲才能拍照
- 如果说初中生都可以写程序,那么高位截瘫也可以做鸡。
- 德国使用花油(菜籽油、花生油)代替汽油
- 悟透DELPHI》一书第16章的部分内容
- 什么是正则表达式以及在Java1.4中的应用
- 计算文件夹大小两种方法
- 管中窥豹:VS2005与VC6的差别
- wab文件格式分析
- HTTP 1.1与HTTP 1.0的比较
- IEEE浮点数表示法 选择自 fireseed 的 Blog
- [转]我的Java学习之路
- ASP编写常用代码
- ado.net统一事务,及连接池管理(一)
- 极限编程与敏捷开发