【发布时间】:2011-09-05 09:48:22
【问题描述】:
有谁知道我可以用来计算指定目录中文件夹数量的代码吗?
【问题讨论】:
标签: delphi delphi-2010
有谁知道我可以用来计算指定目录中文件夹数量的代码吗?
【问题讨论】:
标签: delphi delphi-2010
我所知道的最简单的代码使用来自IOUtils 单元的TDirectory:
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;
【讨论】:
FindFirst 中使用 faAnyFile 而不是 faDirectory?