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(1), //'H:\tmp'目录中的所有目录
            FilterPredicate); //附加过滤参数
        // for I := 0 to Length(dynArr) - 1 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], 0);
            Exit;
        end;
    end;
end;

 

posted @ 2013-12-30 17:18  oszhouzhb  阅读(1098)  评论(0编辑  收藏  举报