Delphi 目录函数,操作[1] FindFirst、FindNext、TSearchRec - 寻找目标目录下的第一个文件和下一个文件

Delphi 目录操作[1] FindFirst、FindNext  - 寻找目标目录下的第一个文件和下一个文件

单元:SysUtils

1、FindFirst //寻找目标目录下的第一个文件
函数 原型:

1
2
3
4
5
6
7
8
9
10
11
12
13
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;
const
  faSpecial = faHidden or faSysFile or faVolumeID or faDirectory;
begin
  F.ExcludeAttr := not Attr and faSpecial;
  F.FindHandle := FindFirstFile(PChar(Path), F.FindData);
  if F.FindHandle <> INVALID_HANDLE_VALUE then
  begin
    Result := FindMatchingFile(F);
    if Result <> 0 then FindClose(F);
  end else
    Result := GetLastError;
end;

返回值:成功找到文件时,返回 0

Arrt 参数可定义:

  • faReadOnly = $00000001 platform;   //只读文件
  • faHidden = $00000002 platform;  //隐藏文件
  • faSysFile = $00000004 platform;  //系统文件
  • faVolumeID = $00000008 platform;   //卷标文件
  • faDirectory = $00000010;  //目录文件
  • faArchive = $00000020 platform;  //归档文件
  • faSymLink = $00000040 platform;  //链接文件
  • faAnyFile = $0000003F;  //任意文件

 

2、FindNext //寻找下一个文件

函数原型:

1
2
3
4
5
6
function FindNext(var F: TSearchRec): Integer;
begin
  if FindNextFile(F.FindHandle, F.FindData) then
    Result := FindMatchingFile(F) else
    Result := GetLastError;
end;

返回值:成功找到文件时,返回 0

Arrt 参数,参考以上.

TSearchRec 参数 是一个文件信息的记录类型,可以通过返回值获取 SearchRec.Name 文件名、SearchRec.Size 文件大小 等信息。
TSearchRec 记录类型原型:

1
2
3
4
5
6
7
8
9
TSearchRec = record
  Time: Integer;    //文件时间
  Size: Integer;   //文件大小
  Attr: Integer;   //文件属性
  Name: TFileName; //文件名称
  ExcludeAttr: Integer;
  FindHandle: THandle  platform;
  FindData: TWin32FindData  platform;
end;

 

Delphi 示例:

1
2
3
4
5
6
7
8
9
10
11
12
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;

  

创建时间:2020.06.18  更新时间:

 

posted on   滔Roy  阅读(2452)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报

导航

点击右上角即可分享
微信分享提示