我有程序只给我当前目录的文件夹。如何获取子目录中的所有文件夹(当前目录中存在的所有文件夹+子目录中存在的所有文件夹)提前感谢
procedure GetSubDirectories(const directory : string; list : TStrings) ;
var
sr : TSearchRec;
begin
try
if FindFirst(IncludeTrailingPathDelimiter(directory) + '*.*', faDirectory, sr) < 0 then
Exit
else
repeat
if ((sr.Attr and faDirectory <> 0) AND (sr.Name <> '.') AND (sr.Name <> '..')) then
List.Add(IncludeTrailingPathDelimiter(directory) + sr.Name) ;
until
FindNext(sr) <> 0;
finally
SysUtils.FindClose(sr) ;
end;
end;
答案 0 :(得分:1)
使用递归:
program Project9;
{$APPTYPE CONSOLE}
uses
SysUtils;
function ListFolders(const DirName: string): Integer;
var
Path: string;
F: TSearchRec;
SubDirName: string;
begin
Path:= DirName + '\*.*';
Result:= 0;
if FindFirst(Path, faAnyFile, F) = 0 then begin
try
repeat
if (F.Attr and faDirectory <> 0) then begin
if (F.Name <> '.') and (F.Name <> '..') then begin
SubDirName:= IncludeTrailingPathDelimiter(DirName) + F.Name;
Writeln(SubDirName);
Result:= Result + 1 + ListFolders(SubDirName);
end;
end;
until FindNext(F) <> 0;
finally
FindClose(F);
end;
end;
end;
begin
Writeln(ListFolders('C:\Temp'));
Readln;
end.
答案 1 :(得分:0)
function GetCount(Dir:string):Integer; <head>
开始
结果:=长度(TDirectory.GetFiles(dir,&#39; 。&#39;,TsearchOption.soAllDirectories))
端;