Delphi在向文件写入内容时,经常需要判断文件是否存在,如果存在,用TStringList读取内容,并将新加入的内容加入容器中。如果文件不存在,就创建文件,而后写入,可是经常会碰到文件正在使用的错误报警,因为调用的是一个方法,为了减少代码,在文件创建后,选择关闭名柄。
下面所有方法实现的前提都是当前主程序工作的文件夹下,如果实现其他路径的方法,应该需要进一步修改,尤其多层路径的文件夹判断,需要好好设计。
下面是判断文件是否存在过程:
procedure TFrmMain.Button1Click(Sender: TObject);
var
fh1:THandle;
begin
if fileexists('Data\my.txt') then
begin
WriteFile(Sender); //调用向文件写入内容的过程
end
else
begin
fh1 := FileCreate('Data\my.txt');
FileClose(fh1); //释放名柄,
WriteFile(Sender);
end;
end;
向文件写入的过程,当然,这里加入了内容是否重复的检查。
procedure TFrmMain.WriteFile(Sender: TObject);
var
sList:TStringList;
s:string;
i:integer;
judge:Boolean;
begin
judge:=True;
sList:=TStringList.Create;
sList.LoadFromFile('Data\my.txt');
s:=Edit1.Text;
for i:=0 to sList.Count-1 do
begin
if s= sList[i] then
begin
judge := False;
end;
end;
if judge = True then
begin
sList.Add(s);
sList.SaveToFile('Data\my.txt');
end;
FreeAndNil(sList);
end;
当然还可以加入判断文件夹是否存在,加在判断文件之前。
if not FileExists('Data') then
try
begin
CreateDir('Data');
end;
except
raise Exception.Create('不能创建Data文件夹');
end;
所有评论(0)