文件查找记录类型

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

,可你仍然感谢天地和人世所带来的这些变化和发生。

文件查找记录类型

相关文章:

你感兴趣的文章:

标签云: