使用函数:
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;