delphi 获取目录下所有文件名
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 中提些条件, 譬如判断如果是文件夹就递归搜索等等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了