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;

 

转载于:https://my.oschina.net/zyyhhh/blog/1579678

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐