delphi操作文本文件简介(二)


1.4 Delphi的文件管理标准过程 

根据功能我们把标准过程划分为十一类进行介绍。  

1.4.1 文件的打开与关闭 

AssignFile :把一个外部文件名和一个文件变量相关联

Reset :打开一个存在的文件

Rewrite :创建并打开一个新文件(或覆盖原有文件)

Append :以添加方式打开一个文件(只适用于文本文件)

CloseFile :关闭一个打开的文件

FileOpen :打开一个特定的文件并返回文件句柄

FileCreate :创建一个给定文件名的文件并返回文件句柄

FileClose :关闭一个特定句柄的文件 

后边三个文件主要供系统内部使用,在文件复制的编程中也往往会用到。它们操作的对象是文件句柄而不是文件变量。

代码:


  1. procedure TForm1.AppendTxt(Str, FileName: String);

  2. var

  3.  f:TextFile;

  4. begin

  5.  AssignFile(f, FileName); //把一个外部文件和一个变量关联起来。

  6.  Append(f);     //追加方式打开一个文件

  7.  Writeln(f, Str); //把字符串写入到变量F

  8.  Closefile(f);   //关闭文件

  9. end;

    procedure AppendTxt(Str, FileName: String);
    var
      f:TextFile;
    begin
    // FileName:=ExtractFilePath(ParamStr(0))+FileName;
       AssignFile(f, FileName);
      if FileExists(FileName)then
      begin
          Append (f);
          Writeln(f, Str);
      end
      else//文件不存在就创建
      begin
         rewrite(f);
         Writeln(f, Str);
      end;
     Closefile(f);
    end;



1.4.2 文件定位 

Seek :把文件当前位置移到指定部分

FilePos :返回文件的当前位置

Eoln : 返回行结束标志

EOF :返回文件结束标志

FileSeek :改变当前文件指针的位置

Seek与FileSeek的区别是:

1. Seek仅用于记录文件;

2. FileSeek的参数是文件句柄、偏移量、起始位置。其中起始位置有文件首、当前位置、文件尾三种选择。Seek的参数是文件变量、偏移量,偏移量是从文件首开始定位的。

3. FileSeek的偏移量以字节数来计算,而Seek是根据记录号进行移动。

Seek、FilePos仅用于记录文件。但任何文件都可以看作是基于字节的记录文件。下面一段程序表示了它们的用法。

{ 该例子的设计界面为一个包含TOpenDialog部件的窗体。} 

程序代码

uses Dialogs;

var

f: file of Byte;

size: Longint;

S: String;

y: Integer;

begin

if OpenDialog1.Execute then

begin

AssignFile(f, OpenDialog1.FileName);

Reset(f);

size := FileSize(f);

S := 'File size in bytes: ' + IntToStr(size);

y := 10;

Canvas.TextOut(5, y, S);

y := y + Canvas.TextHeight(S) + 5;

S := 'Seeking halfway into file...';

Canvas.TextOut(5, y, S);

y := y + Canvas.TextHeight(S) + 5;

Seek(f,size div 2);

S := 'Position is now ' + IntToStr(FilePos(f));

Canvas.TextOut(5, y, S);

CloseFile(f);

end;

end.


1.4.3 文件删除与截断

Erase :删除一个存在的文件

DeleteFile : 删除一个文件

Truncate :从文件当前位置将文件截断 

Erase与DeleteFile的区别是:Erase以文件变量为参数,当文件不能删除时引起一个异常;DeleteFile以文件名为参数,当文件不存在或不能删除时返回False,而并不引起一个异常。 

1.4.4 文件名操作 

Rename :文件更名,以文件变量为操作对象

RenameFile :文件更名,参数为文件的原名和新名

ChangeFileExt :改变文件扩展名

ExpandFileName :返回文件全路径名

ExtractFileExt :返回文件扩展名

ExtractFileName :从全路径名中返回文件名

ExtractFilePath :返回特定文件的路径 

1.4.5 文件属性 

FileGetAttr :返回文件属性

FileSetAttr :设置文件属性 

1.4.6 文件状态 

FileSize :返回文件对象大小

IOResult :返回上一次I/O操作的状态

FileExists :检测文件是否存在 

1.4.7 文件日期 

DateTimeToFileDate :把Delphi日期格式转换为DOS日期格式

FileDateToDateTime :把DOS日期格式转换为Delphi日期格式

FileGetDate :返回文件的DOS日期时间戳

FileSetDate :设置文件的DOS日期时间戳 

1.4.8 文件读写 

Read,Readln :从文本或记录文件中读取变量

Write :将指定变量写入文本或记录文件

Writeln :将指定变量写入文本文件并写入一个行结束标志

FileRead :从一个指定文件中读取变量

FileWrite :向指定文件写入数据 

FileRead和FileWrite都是以文件句柄为操作对象,主要供系统内部使用。 

1.4.9 目录操作 

MkDir :创建当前目录的子目录

ChDir :改变当前目录

GetDir :返回特定磁盘的当前目录

RmDir :删除一个空子目录 

1.4.10 磁盘操作 

DiskFree :返回磁盘自由空间

DiskSize :返回特定磁盘的大小 

1.4.11 文件查找

FileSearch :查找目录中是否存在某一特定文件

FindFirst :在目录中查找与给定文件名(可以包含匹配符)及属性集相匹配的第一个文件

FindNext :返回符合条件的下一个文件

FindClose :中止一个FindFirst / FindNext序列 

有关文件管理标准过程/函数的更详细资料,请查阅Delphi相关的Help主题。以上的大部分过程在后面都有应用实例,可以从中体会其用法。

 在Delphi的联机帮助Help系统中把有关文件的过程/函数分为两个主题:I/O Routine和File_Management  Routine。前者大部分以文件变量为操作对象,而后者大部分以文件名或文件句柄为操作对象。这里为了方便使用,我们按功能重新进行了分类。在下一节中 主要应用I/O Routine主题下的过程,而在第四节的综合举例中主要应用File_Management Routine主题下的过程。