文件管理函数(二)

来源:互联网 发布:c语言char用法 编辑:程序博客网 时间:2024/06/05 03:52
 
  1. //查找一个文件 FileSearch
  2. var
  3.   FileName,Dir,s: string;
  4. begin
  5.   FileName := 'notepad.exe';
  6.   Dir := 'c:/windows';
  7.   s := FileSearch(FileName,Dir);
  8.   if s<>'' then
  9.     ShowMessage(s)  //c:/windows/notepad.exe
  10.   else
  11.     ShowMessage('没找到');
  12. end;
  13. --------------------------------------------------------------------------------
  14. //搜索文件 FindFirst; FindNext; FindClose
  15. var
  16.   sr: TSearchRec;     //定义 TSearchRec 结构变量
  17.   Attr: Integer;      //文件属性
  18.   s: string;          //要搜索的内容
  19.   List: TStringList;  //存放搜索结果
  20. begin
  21.   s := 'c:/windows/*.txt';
  22.   Attr := faAnyFile;              //文件属性值faAnyFile表示是所有文件
  23.   List := TStringList.Create;     //List建立
  24.   if FindFirst(s,Attr,sr)=0 then  //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个
  25.   begin
  26.     repeat                        //如果有第一个就继续找
  27.       List.Add(sr.Name);          //用List记下结果
  28.     until(FindNext(sr)<>0);       //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到
  29.   end;
  30.   FindClose(sr);                  //需要结束搜索, 搜索是内含句柄的
  31.   ShowMessage(List.Text);         //显示搜索结果
  32.   List.Free;                      //释放List
  33.   //更多注释:
  34.   //TSearchRec 结构是内涵文件大小、名称、属性与时间等信息
  35.   //TSearchRec 中的属性是一个整数值, 可能的值有:
  36.   //faReadOnly  1   只读文件
  37.   //faHidden    2   隐藏文件
  38.   //faSysFile   4   系统文件
  39.   //faVolumeID  8   卷标文件
  40.   //faDirectory 16  目录文件
  41.   //faArchive   32  归档文件
  42.   //faSymLink   64  链接文件
  43.   //faAnyFile   63  任意文件
  44.   //s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是*, 譬如: C:/*
  45.   //实际使用中还应该在 repeat 中提些条件, 譬如判断如果是文件夹就递归搜索等等
  46. end;
  47. --------------------------------------------------------------------------------
  48. //读取与设置文件属性 FileGetAttr; FileSetAttr
  49. var
  50.   FileName: string;
  51.   Attr: Integer;  //属性值是一个整数
  52. begin
  53.   FileName := 'c:/temp/Test.txt';
  54.   Attr := FileGetAttr(FileName);
  55.   ShowMessage(IntToStr(Attr));  //32, 存档文件
  56.   //设置为隐藏和只读文件:
  57.   Attr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN;
  58.   if FileSetAttr(FileName,Attr)=0 then  //返回0表示成功
  59.     ShowMessage('设置成功!');
  60.   //属性可选值(有些用不着):
  61.   //FILE_ATTRIBUTE_READONLY = 1; 只读
  62.   //FILE_ATTRIBUTE_HIDDEN = 2; 隐藏
  63.   //FILE_ATTRIBUTE_SYSTEM = 4; 系统
  64.   //FILE_ATTRIBUTE_DIRECTORY = 16
  65.   //FILE_ATTRIBUTE_ARCHIVE = 32; 存档
  66.   //FILE_ATTRIBUTE_DEVICE = 64
  67.   //FILE_ATTRIBUTE_NORMAL = 128; 一般
  68.   //FILE_ATTRIBUTE_TEMPORARY = 256
  69.   //FILE_ATTRIBUTE_SPARSE_FILE = 512
  70.   //FILE_ATTRIBUTE_REPARSE_POINT = 1204
  71.   //FILE_ATTRIBUTE_COMPRESSED = 2048; 压缩
  72.   //FILE_ATTRIBUTE_OFFLINE = 4096
  73.   //FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; 不被索引
  74.   //FILE_ATTRIBUTE_ENCRYPTED = 16384
  75. end;
  76. --------------------------------------------------------------------------------
  77. //获取文件的创建时间 FileAge; FileDateToDateTime
  78. var
  79.   FileName: string;
  80.   ti: Integer;
  81.   dt: TDateTime;
  82. begin
  83.   FileName := 'c:/temp/Test.txt';
  84.   ti := FileAge(FileName);
  85.   ShowMessage(IntToStr(ti));  //返回: 931951472, 需要转换
  86.   dt := FileDateToDateTime(ti);  //转换
  87.   ShowMessage(DateTimeToStr(dt));  //2007-12-12 14:27:32
  88. end;
  89. --------------------------------------------------------------------------------
原创粉丝点击