文件操作流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
下面我们来总结一下Delphi中文件操作流程。Delphi中把文件分为3种:文本文件、类型文件和无类型文件。文本文件指可以被任意文件编辑器读取的ASCII文件。类型文件包含由程序员定义的数据类型的文件。无类型文件包含了其他所有的文件类型。
一.文本文件
Step 1 调用AssignFile()将文件变量与一个关联起来。如:
AssignFile(MyTextFile,’TextFile.txt’);
Step 2 打开文件。有三种打开文件的方式:
1.Rewrite过程创建并打开文件,对于一个已经存在的文件,此操作将
使文件被覆盖;
2.使用Reset过程只读地打开一个文件;
3.使用Append过程向已经存在的文本文件追加文本。
Step 3 对文件进行操作。如Write或Read操作。
Step 4 使用CloseFile来关闭一个已经打开的文件。
下面是一个文本文件操作的示例。
例1:
procedure TForm1.Button1Click(Sender: TObject);
var
MyTextFile: TextFile; //定义变量MyTextFile为
文本文件类型
begin
(*步骤1,将文件变量与外部文件联系。相当于为外部文件找了个
“替身”*)
AssignFile(MyTextFile, ‘TextFile.txt’);
(*判断操作的文件是否存在,不存在则创建文件。*)
if FileExists(‘TextFile.txt’) then
(*步骤2,打开文件,不过在打开前,最好进行文件是否存在的判
断。*)
Append(MyTextFile) //追加
else
Rewrite(MyTextFile); //新建,有则覆盖
try
(*步骤3,对文件进行操作。*)
WrtieLn(MyTextFile, ‘在文件末尾添加的文字!’);
Flush(MyTextFile); //清空缓冲区,确保字符串已经写入
文件之中。
finally
(*步骤4,关闭打开的文件,CloseFile常与try…finally搭
配,用于回收资源 *)
CloseFile(MyTextFile);
end;
end;
二.类型文件
Step 1 定义数据结构
Step 2 调用AssignFile()将文件变量与一个类型文件关联起来。
Step 3 打开类型文件。
Step 4 对类型文件进行操作。
Step 5 关闭已经打开的文件。
下面例子演示了类型文件的操作。
例2:
(*步骤1,定义数据结构。*)
type
TPerson = record
Name: string[20];
Sex: string[4]
Age: Integer;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
//声明PersonFile变量为TPerson类型文件,文件是一系列某
种数据类型的集合
PersonFile: file of TPerson;
Person: TPerson;
begin
(*步骤2,关联文件。*)
AssignFile(PersonFile, ‘Person.dat’);
(*步骤3,打开文件。 *)
Reset(PersonFile);
try
While not Eof(PersonFile) do
(*步骤4,对文件进行操作。*)
begin
Read(PersonFile, Person);
Memo1.Lines.Add();
Memo1.Lines.Add(Person.Sex);
Memo1.Lines.Add(IntToStr(Person.Age));
end;
finally
(*步骤5,关闭文件。*)
CloseFile(PersonFile);
end;
end;
3、无类型文件
先介绍一下无类型文件的相关知识。无类型文件是由数据块序列组成的,每个数据块数列为128字节大小的数据。当然这个数据块大小其实是可以自定义的。无类型文件数据的读写操作可以利用数据块实现。无类型文件的操作步骤与文本文件的操作步骤基本相同,只是两者调用的函数略有差异罢了。Step 1 调用AssignFile()将文件变量与一个关联起来。
Step 2 打开文件。
Step 3 对文件进行操作。
Step 4 关闭文件,回收资源。
下面例子为无类型文件的“读取”过程。
例3:
procedure TForm1.Button1Click(Sender: TObject);
var
UnTypedFile: file; //定义无文件类型。
Buf: array[0..128] of byte; //定义缓冲区的大小。
Num: Integer;
Str: string;
begin
(*步骤1,指定文件关联。*)
AssignFile(UnTypedFile, ‘UnTypedFile.dat’);
(*步骤2,打开文件。*)
Reset(UnTypedFile);
(*步骤3,对文件进行操作。*)
try
BlockRead(UnTypedFile, Buf, 1, Num);
for I := 0 to 128 do
Str := Str + VarToStr(Char(Buf[I]));
Memo1.Lines.Add(Str);
finally
(*步骤4,关闭打开的文件,回收资源。*)
CloseFile(UnTypedFile);
end;
end;