如题

解决方案 »

  1.   

    好像只能用递归吧。不知你注意没有,即使Windows操作系统本身,当你使用属性来查看一个目录大小时,对于又大又深的目录,其大小也时逐渐显示的。
      

  2.   

    我找了cfilefind和;;findxxxfile那组函数就是没找到算目录大小的方法,都是得1个1个文件的算
      

  3.   

    windows计算目录大小的时候也是逐步往上加的,你可以选择一个比较大的目录观察一下。
      

  4.   

    //PURPOSE:得到指定驱动器的可用空间(以K字节为单位)
    //IN:     softdiskname  指定驱动器
    //RETURN: >0 可用驱动器的可用空间
    //        =0 表示不可用//NOTE:   这个函数调用GetDiskFreeSpace函数,返回所检测磁盘的
    //        可用空间,sectors  每簇的扇区数,bytes  每扇区的字
    //        节数,freecluster  可用簇数,totalclusters  总的簇数。
     long CTestdiskspaceDlg::GetSoftDiskAvaliableCapacity(char *softdiskname)
    {
    unsigned long sectors,bytes,freeclusters,totalclusters;
    char a[3];
    lstrcpyn(a,softdiskname,4);
    //MessageBox(a);

    if(GetDiskFreeSpace(a,&sectors,&bytes,
    &freeclusters,&totalclusters))
    return freeclusters*sectors*bytes/1024/1024;
    else return 0;
    }
    把softdiskname指定为你的目录就可以了,这是我很久以前的代码了,现在也说不清楚,你自己看看msdn里GetDiskFreeSpace的用法吧
    http://expert.csdn.net/Expert/topic/2073/2073809.xml?temp=.661709