Delphi 之路 — 文件操作函数 (说明和使用说明)

2021-02-20 23:19

阅读:485

  Delphi 之路 — 文件操作函数 (说明和使用说明)

  • //判断文件是否存在

      FileExists

  • //判断文件夹是否存在

      DirectoryExists

  • //删除文件

      DeleteFile; Windows.DeleteFile

  • //删除文件夹

      RemoveDir; RemoveDirectory

  • //获取当前文件夹

      GetCurrentDir

  • //设置当前文件夹

SetCurrentDir; ChDir; SetCurrentDirectory

  • //获取指定驱动器的当前路径名

GetDir

  • //文件改名

RenameFile

  • //建立文件夹  

      CreateDir; CreateDirectory; ForceDirectories

  • //删除空文件夹

      RemoveDir; RemoveDirectory

  • //建立新文件

      FileCreate

  • //获取当前文件的版本号

      GetFileVersion

  • //获取磁盘空间 DiskSize;

      DiskFree

  • //搜索文件

      FindFirst; FindNext; FindClose

  • //读取与设置文件属性

      FileGetAttr; FileSetAttr

  • //获取文件的创建时间

      FileAge; FileDateToDateTime

--------------------------------------------------------------------------------

 1 //判断文件是否存在 FileExists 
 2 var 
 3   f: string; 
 4 begin 
 5   f := c:"temp"test.txt; 
 6   if not FileExists(f) then 
 7   begin 
 8     //如果文件不存在 
 9   end; 
10 end;

 

--------------------------------------------------------------------------------

 1  1 //判断文件夹是否存在 DirectoryExists    
 2  2 var   
 3  3   dir: string;    
 4  4 begin   
 5  5   dir := c:"temp;    
 6  6   if not DirectoryExists(dir) then   
 7  7   begin   
 8  8    //如果文件夹不存在    
 9  9   end;    
10 10 end;  

 

--------------------------------------------------------------------------------

1 //删除文件 DeleteFile; Windows.DeleteFile 
2 var 
3   f: string; 
4 begin 
5   f := c:"temp"test.txt; 
6   //DeleteFile(f); //返回 Boolean 
7   //或者用系统API: 
8   Windows.DeleteFile(PChar(f)); //返回 Boolean 
9 end;

 

--------------------------------------------------------------------------------

1 //删除文件夹 RemoveDir; RemoveDirectory 
2 var 
3 dir: string; 
4 begin 
5   dir := c:"temp; 
6   RemoveDir(dir); //返回 Boolean 
7   //或者用系统 API: 
8   RemoveDirectory(PChar(dir)); //返回 Boolean 
9 end;

 

--------------------------------------------------------------------------------

1 //获取当前文件夹 GetCurrentDir 
2 var 
3 dir: string; 
4 begin 
5   dir := GetCurrentDir; 
6   ShowMessage(dir); //C:"Projects 
7 end;

 

--------------------------------------------------------------------------------

 1 //设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory 
 2 var 
 3 dir: string; 
 4 begin 
 5   dir := c:"temp; 
 6   if SetCurrentDir(dir) then 
 7     ShowMessage(GetCurrentDir); //c:"temp 
 8     //或者 
 9 ChDir(dir); //无返回值 
10 //也可以使用API: 
11 SetCurrentDirectory(PChar(Dir)); //返回 Boolean 
12 end;

 

--------------------------------------------------------------------------------

 1 //获取指定驱动器的当前路径名 GetDir 
 2 var 
 3 dir: string; 
 4 b: Byte; 
 5 begin 
 6   b := 0; 
 7   GetDir(b,dir); 
 8   ShowMessage(dir); // 
 9   //第一个参数: 1、2、3、4...分别对应: A、B、C、D... 
10   //0 是缺省驱动器 
11 end;

 

-------------------------------------------------------------------------------- 

 1 //文件改名 RenameFile 
 2 var 
 3 OldName,NewName: string; 
 4 begin 
 5   OldName := c:"temp"Old.txt; 
 6   NewName := c:"temp"New.txt; 
 7   if RenameFile(OldName,NewName) then 
 8     ShowMessage(改名成功!); 
 9 //也可以: 
10   SetCurrentDir(c:"temp); 
11   OldName := Old.txt; 
12   NewName := New.txt; 
13   if RenameFile(OldName,NewName) then 
14     ShowMessage(改名成功!); 
15 //也可以: 
16   SetCurrentDir(c:"temp); 
17   OldName := Old.txt; 
18   NewName := New.txt; 
19   if RenameFile(OldName,NewName) then 
20     ShowMessage(改名成功!); 
21 end;

 

--------------------------------------------------------------------------------

 1 //建立文件夹 CreateDir; CreateDirectory; ForceDirectories 
 2 var 
 3 dir: string; 
 4 begin 
 5   dir := c:"temp"delphi; 
 6   if not DirectoryExists(dir) then 
 7   CreateDir(dir); //返回 Boolean 
 8 //也可以直接用API: 
 9   CreateDirectory(PChar(dir),nil); //返回 Boolean 
10 //如果缺少上层目录将自动补齐: 
11   dir := c:"temp"CodeGear"Delphi"2007"万一; 
12   ForceDirectories(dir); //返回 Boolean 
13 end;

 

--------------------------------------------------------------------------------

1 //删除空文件夹 RemoveDir; RemoveDirectory 
2 var 
3 dir: string; 
4 begin 
5   dir := c:"temp"delphi; 
6   RemoveDir(dir); //返回 Boolean 
7 //也可以直接用API: 
8   RemoveDirectory(PChar(dir)); //返回 Boolean 
9 end;

 

--------------------------------------------------------------------------------

 1 //建立新文件 FileCreate    
 2 var   
 3   FileName: string;    
 4   i: Integer;    
 5 begin   
 6   FileName := c:"temp"test.dat;    
 7   i := FileCreate(FileName);    
 8   if i>0 then   
 9     ShowMessage(新文件的句柄是:  + IntToStr(i))    
10   else   
11     ShowMessage(创建失败!);    
12 end; 

 

--------------------------------------------------------------------------------

1 //获取当前文件的版本号 GetFileVersion    
2 var   
3   s: string;    
4   i: Integer;    
5 begin   
6   s := C:"WINDOWS"notepad.exe;    
7   i := GetFileVersion(s); //如果没有版本号返回 -1    
8   ShowMessage(IntToStr(i)); //327681 这是当前记事本的版本号(还应该再转换一下)    
9 end;  

 

--------------------------------------------------------------------------------

 1 //获取磁盘空间 DiskSize; DiskFree    
 2 var   
 3   r: Real;    
 4   s: string;    
 5 begin   
 6   r := DiskSize(3); //获取C:总空间, 单位是字节    
 7   r := r/1024/1024/1024;    
 8   Str(r:0:2,s); //格式为保留两位小数的字符串    
 9   s := C盘总空间是:  + s +  GB;    
10   ShowMessage(s); //xx.xx GB    
11   r := DiskFree(3); //获取C:可用空间    
12   r := r/1024/1024/1024;    
13   Str(r:0:2,s);    
14   s := C盘可用空间是:  + s +  GB;    
15   ShowMessage(s); //xx.xx GB    
16 end;       

 

--------------------------------------------------------------------------------

 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; 

 

--------------------------------------------------------------------------------

 1 //搜索文件 FindFirst; FindNext; FindClose    
 2 var   
 3   sr: TSearchRec;    //定义 TSearchRec 结构变量    
 4   Attr: Integer;     //文件属性
 5   s: string;         //要搜索的内容
 6   List: TStringList; //存放搜索结果
 7 begin   
 8   s := c:"windows"*.txt;    
 9   Attr := faAnyFile;             //文件属性值faAnyFile表示是所有文件    
10   List := TStringList.Create;    //List建立    
11   if FindFirst(s,Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个    
12   begin   
13     repeat                       //如果有第一个就继续找    
14       List.Add(sr.Name);         //用List记下结果    
15     until(FindNext(sr)0);      //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到    
16   end;    
17   FindClose(sr);                 //需要结束搜索, 搜索是内含句柄的    
18   ShowMessage(List.Text);        //显示搜索结果    
19   List.Free;                     //释放List    
20     //更多注释:    
21     //TSearchRec 结构是内涵文件大小、名称、属性与时间等信息    
22     //TSearchRec 中的属性是一个整数值, 可能的值有:    
23     //faReadOnly  1   只读文件    
24     //faHidden    2   隐藏文件    
25     //faSysFile   4   系统文件    
26     //faVolumeID  8   卷标文件    
27     //faDirectory 16  目录文件    
28     //faArchive   32  归档文件    
29     //faSymLink   64  链接文件    
30     //faAnyFile   63  任意文件    
31     //s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是*, 譬如: C:"*    
32     //实际使用中还应该在 repeat 中提些条件, 譬如判断如果是文件夹就递归搜索等等    
33 end;  

 

--------------------------------------------------------------------------------

 1 //读取与设置文件属性 FileGetAttr; FileSetAttr    
 2 var   
 3   FileName: string;    
 4   Attr: Integer; //属性值是一个整数    
 5 begin   
 6     FileName := c:"temp"Test.txt;    
 7     Attr := FileGetAttr(FileName);    
 8     ShowMessage(IntToStr(Attr)); //32, 存档文件    
 9     //设置为隐藏和只读文件:    
10     Attr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN;    
11     if FileSetAttr(FileName,Attr)=0 then //返回0表示成功    
12     ShowMessage(设置成功!);    
13     //属性可选值(有些用不着):    
14     //FILE_ATTRIBUTE_READONLY = 1; 只读    
15     //FILE_ATTRIBUTE_HIDDEN = 2; 隐藏    
16     //FILE_ATTRIBUTE_SYSTEM = 4; 系统    
17     //FILE_ATTRIBUTE_DIRECTORY = 16 目录  
18     //FILE_ATTRIBUTE_ARCHIVE = 32; 存档    
19     //FILE_ATTRIBUTE_DEVICE = 64    
20     //FILE_ATTRIBUTE_NORMAL = 128; 一般    
21     //FILE_ATTRIBUTE_TEMPORARY = 256    
22     //FILE_ATTRIBUTE_SPARSE_FILE = 512    
23     //FILE_ATTRIBUTE_REPARSE_POINT = 1204    
24     //FILE_ATTRIBUTE_COMPRESSED = 2048; 压缩    
25     //FILE_ATTRIBUTE_OFFLINE = 4096    
26     //FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; 不被索引    
27     //FILE_ATTRIBUTE_ENCRYPTED = 16384    
28 end;    

 

--------------------------------------------------------------------------------

 1 //获取文件的创建时间 FileAge; FileDateToDateTime    
 2 var   
 3   FileName: string;    
 4   ti: Integer;    
 5   dt: TDateTime;    
 6 begin   
 7   FileName := c:"temp"Test.txt;    
 8   ti := FileAge(FileName);    
 9   ShowMessage(IntToStr(ti)); //返回: 931951472, 需要转换    
10   dt := FileDateToDateTime(ti); //转换    
11   ShowMessage(DateTimeToStr(dt)); //2007-12-12 14:27:32    
12 end;

 

--------------------------------------------------------------------------------

 


评论


亲,登录后才可以留言!