能否明确的告诉我:获得文件夹大小是否只能通过遍历下面的文件大小的累加得到?还有没有快点的获得方式...????难道那种计算方式是获得文件夹大小的唯一?????????

解决方案 »

  1.   

    我有递归算法算,比较快~
    email:[email protected]
      

  2.   

    好像目前只有这样,给你一个函数function GetDirectorySize(const ADirectory: string): Integer;
    var
      Dir: TSearchRec;
      Ret: integer;
      Path: string;
    begin
      Result := 0;
      Path := ExtractFilePath(ADirectory);
      Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
      if Ret <> NO_ERROR then exit;
      try
        while ret = NO_ERROR do
        begin
          inc(Result, Dir.Size);
          if (Dir.Attr in [faDirectory]) and (Dir.Name[1] <> '.') then
            Inc(Result, GetDirectorySize(Path + Dir.Name + '\*.*'));
          Ret := Sysutils.FindNext(Dir);
        end;
      finally
        Sysutils.FindClose(Dir);
      end;
    end;
      

  3.   

    http://expert.csdn.net/Expert/topic/2301/2301162.xml?temp=.5224573