AssignFile: 关联
Rewrite: 创建并打开一个新文件, 如已存在则覆盖
Reset: 打开已存在的文件; 追加也要用它先打开, 然后再移动指针; Append 是文本文件专用的
CloseFile: 关闭
FileSize: 记录数
FilePos: 返回文件的当前位置
Seek: 把文件指针移到指定位置(只用于结构化文件)
Eof: 文件尾
Read: 读
Write: 写
另外: 包含长字符串、变量、类实例、接口或动态数组的记录不能写入类型文件中!
//操作示例: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;Button5: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}typeTPersonRec = packed recordname: string[12];age: Word;birthday: TDate;end; //先定义一个结构varDataFile: file of TPersonRec; //声明 DataFile 用来读写 TPersonRec 结构数据PersonRec: TPersonRec; //声明结构变量FileName: string = 'c:\temp\test.dat'; //准备操作的文件//创建并写入文件 procedure TForm1.Button1Click(Sender: TObject); beginAssignFile(DataFile,FileName); //关联文件Rewrite(DataFile); //建立文件, 如果存在就覆盖PersonRec.name := '张三';PersonRec.age := 18;PersonRec.birthday := StrToDate('1990-1-1');Write(DataFile,PersonRec); //写入PersonRec.name := '李四儿';PersonRec.age := 81;PersonRec.birthday := StrToDate('1927-11-11');Write(DataFile,PersonRec); //写入CloseFile(DataFile); //关闭 end;//追加数据 procedure TForm1.Button2Click(Sender: TObject); beginAssignFile(DataFile,FileName);Reset(DataFile); //Append 只对文本文件Seek(DataFile,FileSize(DataFile)); //移到文件尾, 这里的 FileSize 表示有多少条记录PersonRec.name := '王二麻子';PersonRec.age := 1;PersonRec.birthday := StrToDate('2006-12-19');Write(DataFile,PersonRec);PersonRec.name := '嫦娥';PersonRec.age := 2000;PersonRec.birthday := StrToDate('0007-7-7');Write(DataFile,PersonRec);CloseFile(DataFile);end;//读取数据(用Memo显示数据吧) procedure TForm1.Button3Click(Sender: TObject); beginAssignFile(DataFile,FileName);Reset(DataFile);Memo1.Clear;Read(DataFile,PersonRec); //读取一条, 指针自动移到下一条Memo1.Lines.Add(PersonRec.name);Memo1.Lines.Add(IntToStr(PersonRec.age));Memo1.Lines.Add(DateToStr(PersonRec.birthday));Read(DataFile,PersonRec); //读取下一条Memo1.Lines.Add(PersonRec.name);Memo1.Lines.Add(IntToStr(PersonRec.age));Memo1.Lines.Add(DateToStr(PersonRec.birthday));Seek(DataFile,FileSize(DataFile)-1); //指针移到最好一条Read(DataFile,PersonRec);Memo1.Lines.Add(PersonRec.name);Memo1.Lines.Add(IntToStr(PersonRec.age));Memo1.Lines.Add(DateToStr(PersonRec.birthday));CloseFile(DataFile);{显示结果:张三181990-1-1李四儿811927-11-11嫦娥20000007-7-7 } end;//修改数据 procedure TForm1.Button4Click(Sender: TObject); beginAssignFile(DataFile,FileName);Reset(DataFile);Seek(DataFile,3); //指针移到第四条Read(DataFile,PersonRec); //读取PersonRec.age := 0;PersonRec.birthday := StrToDate('2007-10-24');Seek(DataFile,3); //指针移到第四条Write(DataFile,PersonRec); //写入CloseFile(DataFile); end;//读取所有数据 procedure TForm1.Button5Click(Sender: TObject); beginAssignFile(DataFile,FileName);Reset(DataFile);Memo1.Clear;while not Eof(DataFile) dobeginMemo1.Lines.Add('第 ' + IntToStr(FilePos(DataFile)+1) + ' 条:');Read(DataFile,PersonRec);Memo1.Lines.Add(PersonRec.name);Memo1.Lines.Add(IntToStr(PersonRec.age));Memo1.Lines.Add(DateToStr(PersonRec.birthday));Memo1.Lines.Add(''); //来个空行end;CloseFile(DataFile);{显示结果:第 1 条:张三181990-1-1第 2 条:李四儿811927-11-11第 3 条:王二麻子12006-12-19第 4 条:嫦娥02007-10-24 }end;end.