计算文件夹大小两种方法

原创 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;
   
}

java计算文件大小三种方法以及优缺点比较

1、通过File 的length() 方法计算文件大小; 2、使用FileInputStream后通过FileChannel的size方法计算文件大小; 3、通过FileInputStream的ava...
  • u014143369
  • u014143369
  • 2016年11月14日 21:32
  • 3265

iOS 计算文件夹中包含所有文件的大小

contentsOfDirectoryAtPath: 以非递归的方式获取当前文件夹下的文件夹和文件路径 subpathsAtPath: 以递归的方式获取当前文件夹下 所有 文件夹和文件路径...
  • qq_27736043
  • qq_27736043
  • 2016年04月18日 13:09
  • 2542

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

学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:279558494 我们一起学Java! 这篇文章介绍了JAVA读取文件夹大...
  • u011277123
  • u011277123
  • 2016年10月31日 10:26
  • 2075

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

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

C#递归实现显示文件夹及所有文件并计算其大小的方法

算法中递归的一个典型应用就是遍历目标文件夹,并把该文件夹下的所有文件和文件夹打印或显示出来,还可以递归计算出目标文件夹的总大小。本文即以实例形式展示了C#递归实现显示目标文件夹的所有文件和文件夹,并计...
  • zhanglong_longlong
  • zhanglong_longlong
  • 2015年12月23日 20:26
  • 802

iOS中计算文件大小两种方法

场景需求:给一个文件,或者文件夹,计算出这个文件或者文件夹的大小(字符串);分析: 文件的操作需要用到文件管理者NSFileManager这个类来操作无论是文件还是文件夹都必须找到它的全路径(而...
  • Leemin_ios
  • Leemin_ios
  • 2017年08月01日 19:54
  • 164

两种计算Java对象大小的方法

之前想研究一下unsafe类,碰巧在网上看到了这篇文章,觉得写得很好,就转载过来。原文出处是: http://blog.csdn.net/iter_zc/article/details/418227...
  • antony9118
  • antony9118
  • 2017年01月10日 20:41
  • 2452

以假乱真!两种方法教你如何隐藏文件夹 .htm

  • 2014年04月12日 11:09
  • 55KB
  • 下载

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

这篇文章介绍了JAVA读取文件夹大小的几种方法实例,有需要的朋友可以参考一下。...
  • qq_37267015
  • qq_37267015
  • 2017年02月13日 18:10
  • 833

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

(一)单线程递归方式 package com.taobao.test; import java.io.File; public class TotalFileSizeSequential {...
  • chao2263263364
  • chao2263263364
  • 2015年09月22日 16:50
  • 179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算文件夹大小两种方法
举报原因:
原因补充:

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