如何快速统计一个文件夹(包含子文件夹)中所含的文件数!(100)

  • 主题发起人 主题发起人 taizhi
  • 开始时间 开始时间
T

taizhi

Unregistered / Unconfirmed
GUEST, unregistred user!
统计速度要快,请各位帮忙!
 
没有快速,取决于你的电脑! var globect:word=0;procudure getflnum(_path:string); FindFirst FindNextIf _FL.attrib=$10 then 第归调用本过程(_path+'/'+_FL.filename)!If (_FL.attrib and $f0)=$20 then inc(globect);end;procedure form1.button1click(); begin globect:=0; getflnum('c:/dir'); showmesage('file no:'+inttostr(globect)); end;
 
补充一下楼上,function getflnum(_path:string):Integer;begin result:=0; FindFirst; repeat if (_Fl.FileName='.') or(_Fl.FileName='..') then continue else If (_FL.attrib and $10)>0 then result := result + getflnum(_path+'/'+_FL.filename) else If (_FL.attrib and $f0)=$20 then inc(result); unitl FindNext <> 0end;关于findfirst/FindNext,请查看delphi帮助,里面有代码案例
 
遍历文件夹很方便 速度也很不错 上千上万大概10秒左右 function MakeFileList(Path,FileExt:string;):TStringList ;var sch:TSearchrec; filecount:integer;begin Result:=TStringlist.Create; if rightStr(trim(Path), 1) <> '/' then Path := trim(Path) + '/' else Path := trim(Path); if not DirectoryExists(Path) then begin Result.Clear; exit; end; if FindFirst(Path + '*', faAnyfile, sch) = 0 then begin repeat Application.ProcessMessages; if ((sch.Name = '.') or (sch.Name = '..')) then Continue; if DirectoryExists(Path+sch.Name) then begin Result.AddStrings(MakeFileList(Path+sch.Name,FileExt)); end else begin if (UpperCase(extractfileext(Path+sch.Name)) = UpperCase(FileExt)) or (FileExt='.*') then Result.Add(Path+sch.Name); if pos('.',sch.Name)<>0 then begin filecount:=filecount+1;//这里就是统计个数 end; end; until FindNext(sch) <> 0; SysUtils.FindClose(sch); end;end;
 
多人接受答案了。
 
后退
顶部