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

 

代码
// 判断文件是否存在 FileExists   
var   
  f: 
string ;   
begin   
  f :
=   ' c:\temp\test.txt ' ;   
  
if   not  FileExists(f)  then   
  
begin   
   
// 如果文件不存在   
  
end ;   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 判断文件夹是否存在 DirectoryExists   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp ' ;   
  
if   not  DirectoryExists(dir)  then   
  
begin   
   
// 如果文件夹不存在   
  
end ;   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 删除文件 DeleteFile; Windows.DeleteFile   
var   
  f: 
string ;   
begin   
  f :
=   ' c:\temp\test.txt ' ;   
// DeleteFile(f);   // 返回 Boolean   
  
// 或者用系统API:   
  Windows.DeleteFile(PChar(f)); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 删除文件夹 RemoveDir; RemoveDirectory   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp ' ;   
  RemoveDir(dir); 
// 返回 Boolean   
  
// 或者用系统 API:   
  RemoveDirectory(PChar(dir)); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取当前文件夹 GetCurrentDir   
var   
  dir: 
string ;   
begin   
  dir :
=  GetCurrentDir;   
  ShowMessage(dir); 
// C:\Projects   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp ' ;   
  
if  SetCurrentDir(dir)  then   
    ShowMessage(GetCurrentDir); 
// c:\temp   
  
// 或者   
  ChDir(dir); 
// 无返回值   
  
// 也可以使用API:   
  SetCurrentDirectory(PChar(Dir)); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取指定驱动器的当前路径名 GetDir   
var   
  dir: 
string ;   
  b: Byte;   
begin   
  b :
=   0 ;   
  GetDir(b,dir);   
  ShowMessage(dir); 
//    
  
// 第一个参数:  1 2 3 4 ...分别对应: A、B、C、D...   
// 0  是缺省驱动器   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 文件改名 RenameFile   
var   
  OldName,NewName: 
string ;   
begin   
  OldName :
=   ' c:\temp\Old.txt ' ;   
  NewName :
=   ' c:\temp\New.txt ' ;   
  
  
if  RenameFile(OldName,NewName)  then   
    ShowMessage(
' 改名成功! ' );   
  
// 也可以:   
  SetCurrentDir(
' c:\temp ' );   
  OldName :
=   ' Old.txt ' ;   
  NewName :
=   ' New.txt ' ;   
  
  
if  RenameFile(OldName,NewName)  then   
    ShowMessage(
' 改名成功! ' );   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 建立文件夹 CreateDir; CreateDirectory; ForceDirectories   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp\delphi ' ;   
  
if   not  DirectoryExists(dir)  then   
    CreateDir(dir); 
// 返回 Boolean   
  
// 也可以直接用API:   
  CreateDirectory(PChar(dir),
nil );  // 返回 Boolean   
  
// 如果缺少上层目录将自动补齐:   
  dir :
=   ' c:\temp\CodeGear\Delphi\2007\万一 ' ;   
  ForceDirectories(dir); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 删除空文件夹 RemoveDir; RemoveDirectory   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp\delphi ' ;   
  RemoveDir(dir); 
// 返回 Boolean   
  
// 也可以直接用API:   
  RemoveDirectory(PChar(dir)); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 建立新文件 FileCreate   
var   
  FileName: 
string ;   
  i: Integer;   
begin   
  FileName :
=   ' c:\temp\test.dat ' ;   
  i :
=  FileCreate(FileName);   
  
  
if  i > 0   then   
    ShowMessage(
' 新文件的句柄是:  '   +  IntToStr(i))   
  
else   
    ShowMessage(
' 创建失败! ' );   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取当前文件的版本号 GetFileVersion   
var   
  s: 
string ;   
  i: Integer;   
begin   
  s :
=   ' C:\WINDOWS\notepad.exe ' ;   
  i :
=  GetFileVersion(s);  // 如果没有版本号返回  - 1    
  ShowMessage(IntToStr(i)); 
// 327681  这是当前记事本的版本号(还应该再转换一下)   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取磁盘空间 DiskSize; DiskFree   
var   
  r: Real;   
  s: 
string ;   
begin   
  r :
=  DiskSize( 3 );  // 获取C:总空间, 单位是字节   
  r :
=  r / 1024 / 1024 / 1024 ;   
  Str(r:
0 : 2 ,s);  // 格式为保留两位小数的字符串   
  s :
=   ' C盘总空间是:  '   +  s  +   '  GB ' ;   
  ShowMessage(s); 
// xx.xx GB   
  
  r :
=  DiskFree( 3 );  // 获取C:可用空间   
  r :
=  r / 1024 / 1024 / 1024 ;   
  Str(r:
0 : 2 ,s);   
  s :
=   ' C盘可用空间是:  '   +  s  +   '  GB ' ;   
  ShowMessage(s); 
// xx.xx GB   
end ;   
  
// 查找一个文件 FileSearch   
var   
  FileName,Dir,s: 
string ;   
begin   
  FileName :
=   ' notepad.exe ' ;   
  Dir :
=   ' c:\windows ' ;   
  s :
=  FileSearch(FileName,Dir);   
  
  
if  s <> ''   then   
    ShowMessage(s) 
// c:\windows\notepad.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:\temp\Test.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:\temp\Test.txt ' ;   
  ti :
=  FileAge(FileName);   
  ShowMessage(IntToStr(ti)); 
// 返回:  931951472 , 需要转换   
  
  dt :
=  FileDateToDateTime(ti);  // 转换   
  ShowMessage(DateTimeToStr(dt)); 
// 2007 - 12 - 12   14 : 27 : 32    
end ;  

 

 

你可能感兴趣的:(Delphi)