delphi之读写文件的三种方式

一、Tstrings、Tstringlist

procedure TForm1.Button2Click(Sender: TObject);
var strlist: TStringList;
path: string;
begin
path := 'c:\test.txt';
strlist := TStringList.Create;
try
strlist.Add('str=abcd');
strlist.Insert(, 'int=123'); // key=value 类似键值对模式
strlist.SaveToFile(path);
finally
strlist.Free; //释放
end;
end; procedure TForm1.Button4Click(Sender: TObject);
var strlist: TStringList;
path: string;
begin
path := 'c:\test.txt';
strlist := TStringList.Create;
try
strlist.LoadFromFile(path);
mmo1.Lines.Add(strlist.Values['str']); //输出:abcd
mmo1.lines.Add(strlist.ValueFromIndex[]);// 输出:123
//strlist还有很多好用的功能,可以去查一下
finally
strlist.Free; //释放
end;
end; 

二、直接读取

三、流  (注:不能使用string存储数据,string是指针存的是地址,写入文件的数据是无效的)

  • TMemoryStream

  •  procedure TForm1.Button2Click(Sender: TObject);
    var m: TMemoryStream;
    tr:tr_record;
    path:string;
    begin
    path:='c:\test.txt';
    m := TMemoryStream.Create;
    try
    tr.str:='abcd';
    tr.int:=;
    m.Write(tr,SizeOf(tr));// 将tr数据写入流
    m.SaveToFile(path);//流存入文本
    m.Clear; //清除流的数据
    FillChar(tr,SizeOf(tr),);//初始化结构体数据 m.LoadFromFile(path);//从文本中读取数据,用内存流装
    m.Position:=; //将指针位置置为0(如果装载了多条数据,可以通过改变位置读取后面的,默认为0)
    m.Read(tr,SizeOf(tr));//把数据装到结构体里
    mmo1.Lines.Add(tr.str);//显示结果为:abcd
    //第二种方式
    Move(m.memory^,tr,SizeOf(tr));//跟positon没关系,结果相同
    finally
    m.Free;//释放内存流
    end;
    end;
  • TFileStream

  •  procedure TForm1.Button2Click(Sender: TObject);
    var m: TFileStream;
    tr: tr_record;
    path: string;
    begin
    path := 'c:\test.txt';
    m := TFileStream.Create(path, fmCreate);
    try
    tr.str := 'abcd';
    tr.int := ; m.Write(tr, SizeOf(tr)); // 将tr数据写入流 finally
    m.Free; //释放内存流
    end;
    end; procedure TForm1.Button4Click(Sender: TObject);
    var m: TFileStream;
    tr: tr_record;
    path: string;
    begin
    path := 'c:\test.txt';
    m := TFileStream.Create(path, fmOpenRead);
    try
    m.Read(tr,SizeOf(tr));
    mmo1.Lines.Add(tr.str); //结果为:abcd
    finally
    m.Free; //释放内存流
    end;
    end;
上一篇:Python读写文件的几种方式


下一篇:vrn:基于直接体积回归的单幅图像大姿态三维人脸重建