C++ Builder遍历文件夹代码示例

遍历文件夹代码,已写成函数形式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// param: 绝对路径,文件类型(不要类型则为任意类型)
TStringList* __fastcall lsdir(AnsiString cbl,AnsiString filetype)
{
TSearchRec sr;
TStringList* result = new TStringList();
AnsiString cdir;//为了保存完整路径
if (!FindFirst(cbl+"\\*.*",faAnyFile,sr))
{
do
{
if ( sr.Name!="." && sr.Name!="..")
{
if ((sr.Attr & faDirectory)==faDirectory)//是文件夹就继续搜寻
{
result->AddStrings(lsdir(cbl+"\\"+sr.Name,filetype));
}

cdir=cbl+"\\"+sr.Name;
result->Add(cdir);

}
}

while (FindNext(sr) == 0);
FindClose(sr);
}

if (filetype.Length()>0)
{
int i;
for (i = result->Count-1; i >=0 ; i--)
{
if (StrRight(result->Strings\[i\],1+filetype.Length()).LowerCase()!="."+filetype)
{
result->Delete(i);
}
}
}
return result;
result->Clear();
}
//---------------------------------------------------------------------------