SysUtils单元下的TSearchRec是一个记录类型,主要通过FindFirst, FindNext, and FindClose使用。
接上一篇举例说明TSearchRec常用成员
//sysGetFileList(List,'c:\&;,'*.doc,*.exe'); List通过查找添加多文件//sysGetFileList(List,'c:\&;,'*.doc'); List通过查找添加单文件procedure sysGetFileList(List: TStrings; SourFile,FileName: string);var S_Path: String; TmpList,S_FileList: TStringList; FileRec,SubFileRec: TSearchRec; I: Integer; IsFound: Boolean; SysTime: TSystemTime; FileTime: TFileTime;begin S_Path := IncludeTrailingPathDelimiter(Trim(SourFile));//单元SysUtils中判断末尾是否包含文件夹路径符号'\&;,没有的则补全 if not DirectoryExists(S_Path) then beginList.Clear;Exit; end; S_FileList := TStringList.Create; tryS_FileList.CommaText := FileName;TmpList := TStringList.Create;for I := 0 to S_FileList.Count – 1 dobeginif FindFirst(S_Path + S_FileList[I],faAnyFile,FileRec) = 0 thenrepeatif ((FileRec.Attr and faDirectory) <> 0) thenbeginif ((FileRec.Name <> '.') and (FileRec.Name <> '..')) thensysGetFileList(TmpList,IncludeTrailingPathDelimiter(S_Path + FileRec.Name),FileName);endelsebeginif ((FileRec.Attr and faDirectory) = 0) thenbegin TmpList.Add(S_Path + FileRec.Name); TmpList.Add('FileRec.Size:' + IntToStr(FileRec.Size));<span style="white-space:pre"></span>//文件大小 TmpList.Add('FileRec.Name:' + FileRec.Name);<span style="white-space:pre"></span>//文件名 TmpList.Add('FileRec.Attr:' + IntToStr(FileRec.Attr));<span style="white-space:pre"></span>//文件属性 TmpList.Add('FileRec.ExcludeAttr:' + IntToStr(FileRec.ExcludeAttr));<span style="white-space:pre"></span>//未知 TmpList.Add('FileRec.FindHandle:' + IntToStr(FileRec.FindHandle));<span style="white-space:pre"></span>//文件句柄 FileTimeToLocalFileTime(FileRec.FindData.ftCreationTime,FileTime);<span style="white-space:pre"></span>//文件创建时间 FileTimeToSystemTime(FileTime,SysTime); TmpList.Add('FileRec.FindData.ftCreationTime:' + DateTimeToStr(SystemTimeToDateTime(SysTime))); FileTimeToLocalFileTime(FileRec.FindData.ftLastAccessTime,FileTime);<span style="white-space:pre"></span>//文件最后 ?? 时间<span style="white-space:pre"></span> FileTimeToSystemTime(FileTime,SysTime); TmpList.Add('FileRec.FindData.ftLastAccessTime:' + DateTimeToStr(SystemTimeToDateTime(SysTime))); FileTimeToLocalFileTime(FileRec.FindData.ftLastWriteTime,FileTime);<span style="white-space:pre"></span>//文件最后修改时间 FileTimeToSystemTime(FileTime,SysTime); TmpList.Add('FileRec.FindData.ftLastWriteTime:' + DateTimeToStr(SystemTimeToDateTime(SysTime))); TmpList.Add('FileRec.FindData.nFileSizeHigh:' + FloatToStr(FileRec.FindData.nFileSizeHigh));<span style="white-space:pre"></span>//文件大小Hight值 TmpList.Add('FileRec.FindData.nFileSizeLow:' + FloatToStr(FileRec.FindData.nFileSizeLow)); TmpList.Add('FileRec.TimeStamp:' + DateTimeToStr(FileRec.TimeStamp));<span style="white-space:pre"></span>//实际值=文件最后修改时间<pre name="code" class="delphi">end;end;until FindNext(FileRec) <> 0;end;FindClose(FileRec.FindHandle);if TmpList.CommaText <> '' then//空文件夹不添加路径beginif List.CommaText <> '' thenList.CommaText := List.CommaText + List.Delimiter + TmpList.CommaTextelseList.CommaText := TmpList.CommaText;end; finallyFreeAndNil(TmpList);FreeAndNil(S_FileList); end;
测试文件:aa.docx;
返回结果
E:\***\Out\aa.docxFileRec.Size:11619FileRec.Name:aa.docxFileRec.Attr:32FileRec.ExcludeAttr:0FileRec.FindHandle:31054560FileRec.FindData.ftCreationTime:2015-02-07 10:37:00FileRec.FindData.ftLastAccessTime:2015-02-07 11:16:15FileRec.FindData.ftLastWriteTime:2015-02-07 11:16:15FileRec.FindData.nFileSizeHigh:0FileRec.FindData.nFileSizeLow:11619FileRec.TimeStamp:2015-02-07 11:16:15
,可你仍然感谢天地和人世所带来的这些变化和发生。