TDirectory.GetDirectories 获取指定目录下的目录

时间:2023-03-09 09:51:19
TDirectory.GetDirectories 获取指定目录下的目录

使用函数:

System.IOUtils.TDirectory.GetDirectories

所有重载:

class function GetDirectories(const Path: string): TStringDynArray;
class function GetDirectories(const Path: string; const Predicate: TFilterPredicate): TStringDynArray;
class function GetDirectories(const Path, SearchPattern: string): TStringDynArray; overload; inline; static;
class function GetDirectories(const Path, SearchPattern: string; const Predicate: TFilterPredicate): TStringDynArray;
class function GetDirectories(const Path, SearchPattern: string; const SearchOption: TSearchOption): TStringDynArray; overload; static;
class function GetDirectories(const Path, SearchPattern: string; const SearchOption: TSearchOption; const Predicate: TFilterPredicate): TStringDynArray; overload; static;
class function GetDirectories(const Path: string; const SearchOption: TSearchOption; const Predicate: TFilterPredicate): TStringDynArray; overload; static;

描述:返回给定目录下的子目录列表。返回类型TStringDynArray,动态字符串数组。

参数说明:

参数名

说明

Path

指定要进行枚举的目录

SearchPattern

枚举模板(比如*app 匹配所有app名称结束的文件夹)

SearchOption

枚举选项,是否顶层枚举模式或递归枚举模式

T SearchOption(0)为当前录,不含子目录以

T SearchOption(1)所有目录,递归形式

Predicate

一个用来的过滤不想要的结果的函数(匿名需重写),用来更今精细的过滤

异常处理: 目录无效或目录不存在

例一:

查找所有'H:\tmp' 目录下的所有以'hi'开头且文件属性为隐藏的文件夹

代码部分:

var
sDir: string;
dynArr: TStringDynArray;
FilterPredicate: TDirectory.TFilterPredicate;
begin
ListBox1.Clear;
FilterPredicate := //重写函数
function(const Path: string; const SearchRec: TSearchRec): Boolean
begin
Result := Boolean(SearchRec.Attr and faHidden); //判断是否隐藏文件
end;
try
dynArr := TDirectory.GetDirectories(
'H:\tmp', //'H:\tmp'目录
'hi*', //'hi'开头的文件夹
TSearchOption(), //'H:\tmp'目录中的所有目录
FilterPredicate); //附加过滤参数
// for I := to Length(dynArr) - do
// ListBox1.Items.Add(dynArr[I]);
for sDir in dynArr do
ListBox1.Items.Add(sDir);
except
on e: Exception do
begin
MessageDlg(e.Message, mtError, [mbok], );
Exit;
end;
end;
end;