计算文件夹中的文件夹

时间:2011-09-05 09:48:23

标签: delphi delphi-2010

有没有人知道我可以用来计算指定目录中文件夹数量的代码?

1 个答案:

答案 0 :(得分:12)

我所知道的最简单的代码使用TDirectory单元中的IOUtils

function GetDirectoryCount(const DirName: string): Integer;
begin
  Result := Length(TDirectory.GetDirectories(DirName));
end;

TDirectory.GetDirectories实际上返回一个包含目录名称的动态数组,因此效率有点低。如果您想要最有效的解决方案,那么您应该使用FindFirst进行枚举。

function GetDirectoryCount(const DirName: string): Integer;
var
  res: Integer;
  SearchRec: TSearchRec;
  Name: string;
begin
  Result := 0;
  res := FindFirst(TPath.Combine(DirName, '*'), faAnyFile, SearchRec);
  if res=0 then begin
    try
      while res=0 do begin
        if SearchRec.FindData.dwFileAttributes and faDirectory<>0 then begin
          Name := SearchRec.FindData.cFileName;
          if (Name<>'.') and (Name<>'..') then begin
            inc(Result);
          end;
        end;
        res := FindNext(SearchRec);
      end;
    finally
      FindClose(SearchRec);
    end;
  end;
end;