zoukankan      html  css  js  c++  java
  • VC++ 获取文件夹大小

    由于进度条设置进度需求,需要获取文件夹大小,于是写了个获取文件夹大小的方法:

    DWORD m_dwFolderSize;//文件夹大小
     void GetFolderSize(char* strFolderPath,DWORD &m_dwFolderSize);//strFolderPath 是文件夹路径

    //================获取文件夹大小=========================================
    void CClearTmpFileDlg::GetFolderSize(char* strFolderPath,DWORD &m_dwFolderSize)
    {
        char path[MAX_PATH]={0};
        strcpy(path,strFolderPath);
        if(path[strlen(path)-1]!='\\')//将目录以“\\*.*”形式结尾
        {
            strcat(path,"\\*.*");//连接字符串
        }
        else
        {
            strcat(path,"*.*");//连接字符串
        }
        WIN32_FIND_DATA findData;//定义一个文件查找数据结构
        memset(&findData,0,sizeof(WIN32_FIND_DATA));
        HANDLE hFind = FindFirstFile(path,&findData);//开始查找文件
    
        if(hFind != INVALID_HANDLE_VALUE)//文件查找成功
        {
            while(FindNextFile(hFind,&findData)==TRUE)//查找下一个文件
            {
                //如果文件不是一个目录
                if(!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
                {
                    DWORD dwFileSize = (findData.nFileSizeHigh* (MAXDWORD+1) + findData.nFileSizeLow)/(1024);//获取文件大小,单位为KB
                    m_dwFolderSize += dwFileSize;//累计已扫描文件的容量大小,单位为KB                                
                }
                else//如果文件是一个目录,则递归遍历该目录
                {
                    if((strcmp((const char *)&findData.cFileName,"...")!=0) &&
                        (strcmp((const char *)&findData.cFileName,"..")!=0)&&
                        (strcmp((const char *)&findData.cFileName,".")!=0))
                    {
                        char szFileName[MAX_PATH]={0};
                        strcpy(szFileName,path);//获取完整文件名
                        if(szFileName[strlen(szFileName)-1]!='\\')
                        {
                            strcat(szFileName,"\\");
                        }
                        strcat(szFileName,(char *)findData.cFileName);                        
                        GetFolderSize(szFileName,m_dwFolderSize);//递归调用
                    }
                }
            }
        }
        
    }
  • 相关阅读:
    数组类型
    约瑟夫环问题
    const在c和c++中地位不同
    Makefile学习之路——4
    单链表综合操作
    算法初探——大O表示法
    数据结构实用概念
    Makefile学习之路——3
    翻转字符串
    Makefile学习之路——2
  • 原文地址:https://www.cnblogs.com/JczmDeveloper/p/3032799.html
Copyright © 2011-2022 走看看