概念
在Delphi中定义了TextFile类型表示文本文件,由字符的ASCII码组成,最小存取单位为字符。文本文件也称为ASCII码文件。利用常见的文字编辑器可以浏览支件内容。
TextFile类只支持ANSI编码,无法对其它编码进行读写操作。
相关方法
一、文本文件变量的定义
var <文件变量名>: TextFile;
// 或
var <文件变量名>: Text;
二、文件变量和文件关联
在使用文件变量进行文件操作之前,需要将文件变量与要操作的文件关联,即给文件变量名赋值。文件变量赋值可以使用过程AssignFile,过程的说明语法格式如下:
procedure AssignFile(Var F;Filename:string);
{
参数:
F 文件变量名
Filename 文件名字符串,包括路径的文件名全称。
示例:
AssignFile(txt, 'e:\test.txt’);
}
三、使用文件变量打开文件
Reset方法
procedure Reset(var F: File; [ RecSize: Integer]); overload;
{
功能:
以只读方式打开名为F现有外部文件。如果不存在给定名称的现有外部文件,
或者无法使用当前文件模式打开该文件,则会导致错误。
如果F已经打开,它首先关闭,然后重新打开。当前文件位置设置为文件的开头。
如果F被分配一个空名称,比如AssignFile(F, ''),那么在调用Reset之后,F引用标准输入文件。
调用Reset之后,如果文件为空,则Eof(F)为True;否则,Eof(F)为False。
如果发生任何I/O错误,Reset将关闭文件。您不需要调用CloseFile。
注意:{$I+}使用异常处理运行时错误。使用{$I-}时,请使用IOResult检查I/O错误。
参数:
F 文件变量名
}
Rewrite方法
procedure Rewrite(var F: File; [ RecSize: Integer]); overload;
{
功能:
创建一个新的外部文件,文件名指定给F。
如果已存在同名的外部文件,则删除该文件并在其位置创建新的空文件。
如果F已经打开,它首先关闭,然后重新创建。当前文件位置设置为空文件的开头。
如果F被分配了一个空名称,比如AssignFile(F,''),那么在调用Rewrite之后,F引用标准输出文件。
调用Rewrite之后,Eof(F)始终为True。
如果发生任何I/O错误,重写将关闭文件。您不需要调用CloseFile。
注意:{$I+}使用异常处理运行时错误。使用{$I-}时,请使用IOResult检查I/O错误。
参数:
F 文件变量名
}
Append方法
function Append(var F: Text): Integer;
{
功能:
向文件末尾追加内容
调用Append前确保文件是以只写方式打开。
如果给定名称的外部文件不存在,则会发生错误。如果F已经打开,它将关闭,然后重新打开;当前文件位置设置在文件末尾。
如果F被分配了一个空名称,比如AssignFile(F,''),则在调用Append之后,F引用标准输出文件。
参数:
F 文件变量名
}
四、读/写文件 方法
4.1、读取文件内容。在以读的方式打开文件后,可以使用Read和Readln语句来读取文件内容。
procedure Read(var F: File; V1; [ ..., VN]);
{
功能:
对于文本文件,它将一个字符或多个字符读入一个或多个变量。
参数:
F 文件变量名
V1、V2、...、VN 为需要输入的变量,其类型可以为字符串、字符、整数和实数类型
}
procedure Readln(var F: File; [ ..., VN]); overload;
{
功能:
读取一行文本,然后跳到文件的下一行。
参数:
F 文件变量名
V1、V2、...、VN 为需要输入的变量,其类型可以为字符串、字符、整数和实数类型
}
4.2、向文件写入数据。以写的方式打开文件后,即可向其中写入数据,写人数据使用Write和Writeln过程。
procedure Write([var F: File]; P1; [ ..., PN]); overload;
{
功能:
对于文本文件,它将一个字符或多个字符写入文本文件。
参数:
F 文件变量名
P1、P2、...、PN 为需要输出的变量,其类型可以为字符串、字符、整数和实数类型
}
procedure Writeln([var F: File]; [ P1; [ ..., PN] ]); overload;
{
功能:
向文件中写入一行数据。在写入数据后会在行尾添加行尾标记(换行符),而下次要写入的数据将写在新的一行。
参数:
F 文件变量名
P1、P2、...、PN 为需要输出的变量,其类型可以为字符串、字符、整数和实数类型
}
五、Eof 文件尾标记
function Eof([var F: File]): Boolean; overload;
{
功能:
判断当前文件指针位置是否到达文件的结尾。
参数:
F 文件变量名
返回值:
当前文件指针位置超过文件的最后一个字符或文件为空,则Eof(F)返回True;否则Eof(F)返回False。
}
六、关闭文件
procedure CloseFile(var F: File);
{
功能:
关闭文件并释放打开文件时使用的资源。对于写操作只有ColoseFile后才能把数据真正写入磁盘文件中。
参数:
F 文件变量名
}
使用示例
读文件
procedure TForm1.btn1Click(Sender: TObject);
var
Filename: string;
F: TextFile;
tmpStr: string;
begin
Filename:= 'test.txt';
AssignFile(F, Filename);
Reset(F); // 读
while not EOF(F) do
begin
Readln(F, tmpStr); // 读取一行保存至变量tmpStr中
mmo1.Lines.Add(tmpStr);
end;
CloseFile(F); // 最后别忘了关闭
end;
写文件
procedure TForm1.btn2Click(Sender: TObject); var Filename: string; F: TextFile; begin Filename:= 'test.txt'; AssignFile(F, Filename); Rewrite(F); // 创建并打开一个新文件(或覆盖原有文件) Writeln(F, 'http://1118pc.com'); // 写入一行字符串 CloseFile(F); // 最后别忘了关闭 end;
追加内容
procedure TForm1.btn3Click(Sender: TObject); var Filename: string; F: TextFile; begin Filename:= 'test.txt'; AssignFile(F, Filename); Append(F); // 以追加的方式打开文件,指针到文件尾 Writeln(F, 'http://1118pc.com'); // 写入一行字符串 CloseFile(F); // 最后别忘了关闭 end;
日志文件(文件不存在则创建,存在则追加内容)
procedure AppendFile(s, Filename: string);
var
F: TextFile;
begin
// 先判断一下文件是否存在, 不存在时就创建它
if not FileExists(Filename) then
begin
AssignFile(F, Filename);
Rewrite(F);
CloseFile(F);
end;
AssignFile(F, Filename);
Append(F); // 以追加的方式打开文件,指针到文件尾
Writeln(F, s); // 把内容 s 写入文件
CloseFile(F);
end;
// 调用
procedure TForm1.btn2Click(Sender: TObject);
begin
AppendFile('http://1118pc.com', 'test.txt');
end;




