文件系统
<p>操作文件大体步骤:
1.关联文件AssignFile
2.打开读写Reset、Rewrite、Append
3.开始读写操作
4.关闭文件CloseFile</p>
<p>关联文本文件变量与文本文件
procedure AssignFile(var F;FileName:String);
如:AssignFile(FishcFile,'c:/Fishc.txt');或AssignFile(FishcFile,SaveDialog1.filename);</p>
<h3>文本文件的打开</h3>
<p><strong>Reset</strong>:以只读方式打开,例:Reset(FishcFile);
procedure Reset(var F[: File;RecSize: Word]);
<strong>Rewrite</strong>:以只写方式创建和打开(新建覆盖已有,指针在开头)
procedure Rewrite(var F:File[Recsize:Word]);
<strong>Append</strong>:以追加方式打开(指针在结尾)
procedure Append(var F:Text);
--中括号内容可选</p>
<h3>文件的关闭</h3>
<p><strong>CloseFile</strong>:
procedure CloseFile(var F);
动作:更新写到磁盘中,断开变量与实际文件的联系。</p>
<h3>文本文件的写操作</h3>
<p><strong>Write</strong>:写入文件。
procedure Write(var F: Text;]P1[P2,...Pn]);
<strong>Writeln</strong>:写入文件并加上换行符。最后一个写入后面加</p>
<h3>文本文件的读操作</h3>
<p><strong>Read</strong>:读入文件。
procedure Read(var F: Text;]P1[P2,...Pn]);
<strong>Readln</strong>:读入文件并加上换行符。最后一个写入后面加
读取数值型,默认用空格隔开。
读取字符型,将一直读取到换行符为止。读取指定数量的字符,变量类型建议Sting[N]型。</p>
<h5>行尾与文件尾判断</h5>
<p>通过函数Eoln和Eof,行尾文件尾返回True,否则返回False。空文件也返回True。
function Eoln[(var F:Text)]: Boolean;用的少
function Eof[(var F:Text)]: Boolean;用的多</p>
<p>下面内容应该少用</p>
<h3>记录型文件</h3>
<h5>记录型文件变量</h5>
<p>例如:
在implementation下
type
FishcOil = record
name: String[20];//要限定长度
rdate: Integer;
sex: Char;
end;</p>
<p>var
VFFishcOil: File of FishcOil; </p>
<p>关联和打开和上面文本文件一样,只是不能用Append过程打开记录型文件。Append仅限文本文件。
Reset打开记录文件的属性是读或写。
例子代码:</p>
<pre><code class="language-delphi">type
FishcOil = record
name: String[20];//要限定长度
rdate: Integer;
sex: Char;
end;
var
VFFishcOil: File of FishcOil;
{$R *.dfm}
procedure TForm1.FormCreate(sender:TObject);
var
CurDir: String;
begin
GetDir(0,CurDir); //获得当前目录的函数,0表示当前目录,1表示A盘,2表示B盘,3表示C盘...
AssignFile(VFFishcOil,CurDir + &#039;\Fishc.dat&#039;);
If FileExists(CurDir + &#039;\Fishc.dat&#039;) then \\判断目录文件是否存在
Reset(VFFishcOil)
else
Rewrite(VFFishcOil);
{代码} Read(VFFishcOil,V1,V2); //上面只是打开,还没有读写操作
//CloseFile(VFFishcOil); //不能在创建的时候关闭,需要放到FormClose中
end;
end.</code></pre>
<h5>记录型文件的记录数</h5>
<p>记录是顺序排列,每条都有一个编号,记录从0开始,最后一个记录是N-1。
函数function FileSize(Var F): Integer;用来返回记录数。
GetDir(0,CurDir); //获得当前目录的函数,0表示当前目录,1表示A盘,2表示B盘,3表示C盘...</p>
<h5>移动和检测记录文件的文件指针</h5>
<p>默认每次从头开始写。</p>
<p><strong>Seek过程</strong>:将文件指针移动到文件中的指定记录。
procedure Seek(var F;N:Longint)
例:Seek(VFlady,FileSize(VFlady));
<strong>FilePos函数</strong>:返回文件指针当前所指的记录的记录号。
function FilePos(var F):Longint;</p>
<p>读取并修改记录:
如果忘记二次调用Seek过程,结果将用更新后的信息覆盖下一条第五条内容
Seek(VFlady,4);
Read(VFlady,v1);
v1.name:='李四';
Seek(VFlady,4)
Write(VFlady,v1);</p>
<p>把文件指针定位到文件尾的方法:
写操作前Seek过程把文件指针移到文件最后一条记录之后。知道有多少条记录用FileSize获得。</p>