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;
--------------------------------------------------------------------------------