//查找一个文件 FileSearch
var
FileName,Dir,s: string;
begin
FileName := 'notepad.exe';
Dir := 'c:windows';
s := FileSearch(FileName,Dir);
if s<>'' then
ShowMessage(s) //c:windows otepad.exe
else
ShowMessage('没找到');
end;
var
FileName,Dir,s: string;
begin
FileName := 'notepad.exe';
Dir := 'c:windows';
s := FileSearch(FileName,Dir);
if s<>'' then
ShowMessage(s) //c:windows otepad.exe
else
ShowMessage('没找到');
end;
//搜索文件 FindFirst; FindNext; FindClose var sr: TSearchRec; //定义 TSearchRec 结构变量 Attr: Integer; //文件属性 s: string; //要搜索的内容 List: TStringList; //存放搜索结果 begin s := 'c:windows*.txt'; Attr := faAnyFile; //文件属性值faAnyFile表示是所有文件 List := TStringList.Create; //List建立 if FindFirst(s,Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个 begin repeat //如果有第一个就继续找 List.Add(sr.Name); //用List记下结果 until(FindNext(sr)<>0); //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到 end; FindClose(sr); //需要结束搜索, 搜索是内含句柄的 ShowMessage(List.Text); //显示搜索结果 List.Free; //释放List //更多注释: //TSearchRec 结构是内涵文件大小、名称、属性与时间等信息 //TSearchRec 中的属性是一个整数值, 可能的值有: //faReadOnly 1 只读文件 //faHidden 2 隐藏文件 //faSysFile 4 系统文件 //faVolumeID 8 卷标文件 //faDirectory 16 目录文件 //faArchive 32 归档文件 //faSymLink 64 链接文件 //faAnyFile 63 任意文件 //s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是*, 譬如: C:* //实际使用中还应该在 repeat 中提些条件, 譬如判断如果是文件夹就递归搜索等等 end;
//读取与设置文件属性 FileGetAttr; FileSetAttr var FileName: string; Attr: Integer; //属性值是一个整数 begin FileName := 'c: empTest.txt'; Attr := FileGetAttr(FileName); ShowMessage(IntToStr(Attr)); //32, 存档文件 //设置为隐藏和只读文件: Attr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN; if FileSetAttr(FileName,Attr)=0 then //返回0表示成功 ShowMessage('设置成功!'); //属性可选值(有些用不着): //FILE_ATTRIBUTE_READONLY = 1; 只读 //FILE_ATTRIBUTE_HIDDEN = 2; 隐藏 //FILE_ATTRIBUTE_SYSTEM = 4; 系统 //FILE_ATTRIBUTE_DIRECTORY = 16 //FILE_ATTRIBUTE_ARCHIVE = 32; 存档 //FILE_ATTRIBUTE_DEVICE = 64 //FILE_ATTRIBUTE_NORMAL = 128; 一般 //FILE_ATTRIBUTE_TEMPORARY = 256 //FILE_ATTRIBUTE_SPARSE_FILE = 512 //FILE_ATTRIBUTE_REPARSE_POINT = 1204 //FILE_ATTRIBUTE_COMPRESSED = 2048; 压缩 //FILE_ATTRIBUTE_OFFLINE = 4096 //FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; 不被索引 //FILE_ATTRIBUTE_ENCRYPTED = 16384 end;
//获取文件的创建时间 FileAge; FileDateToDateTime var FileName: string; ti: Integer; dt: TDateTime; begin FileName := 'c: empTest.txt'; ti := FileAge(FileName); ShowMessage(IntToStr(ti)); //返回: 931951472, 需要转换 dt := FileDateToDateTime(ti); //转换 ShowMessage(DateTimeToStr(dt)); //2007-12-12 14:27:32 end;