天天看点

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( ' 改名成功! ' );   

// 也可以:   

  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 ;  

继续阅读