delphi 获取目录下所有文件名

发布时间 2023-07-14 11:22:33作者: 冀未然

delphi 获取目录下所有文件名

目的:程序需要播放背景音乐,要读取某个文件夹里的所有文件名

实现代码:
procedure Form1.Button1Click(Sender: TObject);
var
SearchRec:TSearchRec; //下面有详解
found:integer;
begin
found:=FindFirst(ExtractFilePath(ParamStr(0))+'背景音乐*.*',faAnyFile,SearchRec);
//ExtractFilePath(ParamStr(0))程序当前所在目录
while found=0 do
begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..')
and (SearchRec.Attr<>faDirectory) then //好像是判断文件夹
ListBox1.Items.Add(SearchRec.Name);
found:=FindNext(SearchRec);
end;
FindClose(SearchRec);
end;

TSearchRec
FindFirst是用来寻找目标目录下的第一个文件,FindNext则是寻找下一个
TSearchRec是一个文件信息的纪录,当FindFirst返回SearchRec时,你可以通过SearchRec.Name获取文件名,以及SearchRec.Size获取文件大小等信息。

TSearchRec类型定义如下:
type
TSearchRec = record
Time : Integer;
Size : Integer;
Attr : Integer;
Name : TFileName;
ExcludeAttr : Integer;
FindHandle : THandle;
FindData : TWin32FindData;
end;

 当利用FindFirst和FindNext函数找到一个文件后,利用这个类型可以获得文件的属性、大小和修改时间等信息。

var
SearchRec:TSearchRec; //搜索对象
ext,AppPath:string;
begin
listbox1.Clear; //清空列表框
AppPath:=edit1.text; //设置要搜索的目标目录
ext:='.'; //设置要搜索的文件后缀名

FindFirst(AppPath+ext,faAnyFile,SearchRec); //-faDirectory
listbox1.Items.Add(SearchRec.Name); //添加文件名称
while FindNext(SearchRec)=0 do
listbox1.Items.Add(SearchRec.Name); //添加文件名

end;

//更多注释:
//TSearchRec 结构是内涵文件大小、名称、属性与时间等信息
//TSearchRec 中的属性是一个整数值, 可能的值有:
//faReadOnly 1 只读文件
//faHidden 2 隐藏文件
//faSysFile 4 系统文件
//faVolumeID 8 卷标文件
//faDirectory 16 目录文件
//faArchive 32 归档文件
//faSymLink 64 链接文件
//faAnyFile 63 任意文件
//s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是*, 譬如: C:*
//实际使用中还应该在 repeat 中提些条件, 譬如判断如果是文件夹就递归搜索等等