计算文件夹大小两种方法

原创 2006年06月22日 09:22:00
    方法一:利用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;
   
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

python遍历文件夹——两种遍历本地文件记录文件夹个数、文件数及文件大小的方法

这两个函数的功能:得到给定目录的文件夹个数、文件数,以及文件大小 walkFolders函数没有用到os.walk函数,是自己递归调用的;walkfunc函数用到了os.walk函数,方便了很多。 i...

Java读取文件夹大小的6种方法及代码

转自:http://www.codeceo.com/article/6-ways-java-direct.html 这篇文章介绍了JAVA读取文件夹大小的几种方法实例,有需要的朋友可以参考一下。...

获取文件夹大小的java类,通过类名调用方法,可直接获取文件大小

public class FileSizeUtil {   public static final int SIZETYPE_B = 1;//获取文件大小单位为B的double值   pu...

VC++实现获取文件占用空间大小的两种方法(非文件大小)

写一个工具正好需要用到获取文件在磁盘上占用空间的大小,先普及一下知识吧 首先说一下“文件大小”和“占用空间”的区别,文件大小是指文件自身的大小,不管这个文件放在哪里大小都不会发生改变,而占用空间是指...

android设置修改CheckBox框大小、颜色的两种方法

推荐第二种方法 ------------------------------------------------- 首先:大小由Java代码来设置;颜色由图片来决定; 注意:如果有人...

android设置修改CheckBox框大小、颜色的两种方法

注:关键点在于设置 android:button="@null" 以及 drawable.setBounds(0,0,40,40);checkBox.setCompoundDrawables(dra...

两种方法测试大小端

来分享下两种检测大小端模式的方法,写得有点简单 大端模式:数据的低位放在低地址 小端模式:数据的低位放在高地址 检测大小端,就是看看数据的低位是放在低地址处,还是高地址处。有两种方法:1、直接在v...

对指定文件夹进行递归遍历,将所有文件存到QStringList里。两种方法

看代码吧。 #include "c4filestree.h" #include #include C4FilesTree::C4FilesTree(QObject *parent) : ...

在VC环境下遍历文件夹中的文件:两种方法

在做图像处理中通常要对图像文件连续读取,因此需要遍历整个文件夹中的文件。在VC环境下CFileDialog是不能得到所有文件信息,如果要遍历文件夹内所有文件,应该怎样办呢?不要着急在IO.H、WCHA...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)