如何获得一个目录的大小?(50分)

  • 主题发起人 主题发起人 lshren
  • 开始时间 开始时间
L

lshren

Unregistered / Unconfirmed
GUEST, unregistred user!
如何获得一个目录的大小?
 
将目录及子目录中文件的大小加起来。
方法苯了些,应该有更好的办法
 
这样吧!
function getdirsize (dir: string; subdir: boolean): longint;
var rec: TSearchRec;
found: integer;
begin
result:=0;
if dir[length(dir)]<>'/' then dir:=dir+'/';
found:= findfirst(dir+'*.*', faAnyFile, rec);
while found=0 do begin
inc(result, rec.size);
if (rec.Attr and faDirectory > 0) and (rec.Name[1]<>'.') and (subdir=true) then
inc(result, getdirsize(dir+rec.Name, true));
found:=findnext(rec);
end;
findclose(rec);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:=FloatToStr(getdirsize('e:/download', false)/sqr(1024)) + ' MBytes';
label2.Caption:=FloatToStr(getdirsize('e:/download', true)/sqr(1024)) + ' MBytes';
end;
 
接受答案了.
 
后退
顶部