Delphi 快速读取TXT 指定行的数据
2014-12-11 17:48
302 查看
继上次的问题。在提取了大量的Email 数据后。现在读取数据成了一个问题。今天我取过1~100w的数据。明天我要取100w~200w的数据。在不用数据库的情况下,我搞了一个下午。Delphi Tstringlist 和 textfile 的简单读取是满足不了的。Tstringlist加载不了大数据。普通的textfile 读取指定行,必须循环count到指定行。
想了一下午,然后想到另类点的解决方法。先对齐数据,每行规定一样的长度。比如每行是 255字节。那么100w行就是 255*100w。直接用流seek到相应位置。动手过程中,发现了更加简单的方法。是对齐数据后,配合textfile read实现的。
定义数据结构:
把TXT数据,对齐一下,按照格式生成。
然后下面是读写的示例:
简单粗暴 快速。
想了一下午,然后想到另类点的解决方法。先对齐数据,每行规定一样的长度。比如每行是 255字节。那么100w行就是 255*100w。直接用流seek到相应位置。动手过程中,发现了更加简单的方法。是对齐数据后,配合textfile read实现的。
定义数据结构:
type TEmail = packed record Address : string[32]; end; var MyData : file of TEmail; Email : TEmail;
把TXT数据,对齐一下,按照格式生成。
procedure TForm1.btn2Click(Sender: TObject); var txt:TextFile; str:string; begin AssignFile(MyData,'NewSave.txt'); Rewrite(MyData); AssignFile(txt,'saved.txt'); Reset(txt); while not Eof(txt) do begin str := ''; Readln(txt,str); Email.Address := str; write(MyData,Email); end; CloseFile(MyData); CloseFile(txt); ShowMessage('OK'); end;
然后下面是读写的示例:
{ 读取指定行测试 } procedure TForm1.btn1Click(Sender: TObject); var txt:TextFile; str:string; begin AssignFile(MyData,'NewSave.txt'); Reset(MyData); Seek(MyData,StrToInt(Trim(edt1.Text))); Read(MyData,Email); ShowMessage(Email.Address); CloseFile(MyData); end;
{ 读取1万行测试 } procedure TForm1.btn3Click(Sender: TObject); var txt:TextFile; str:string; i:Integer; begin AssignFile(MyData,'NewSave.txt'); AssignFile(txt,'10000email.txt'); Rewrite(txt); Reset(MyData); Seek(MyData,StrToInt(edt2.Text)); for I := StrToInt(edt2.Text) to StrToInt(edt3.Text) do begin Read(MyData,Email); Writeln(txt,Email.AddRess); end; CloseFile(txt); CloseFile(MyData); ShowMessage('OK'); end;
简单粗暴 快速。
相关文章推荐
- php删除txt文件指定行及按行读取txt文档数据的方法
- Java 读取excel指定行列数据以及将数据保存到txt文件中
- matlab中如何读取TXT数据文件中指定行的数据?
- C#实现把txt文本数据快速读取到excel中
- fscanf函数,从.txt中一次性读取指定数量的数据
- 千万数据的连续ID表,快速读取其中指定的某1000条数据?
- MATLAB中批量从txt文件中读取指定行的数据保存为txt文件
- c# 快速读取txt数据到excel中
- ASP读取txt文本数据(指定行)
- 从本地目录读取指定.txt文件,并且对数据进行解析。
- 删除txt文件指定的行,按行读取txt文档数据
- 千万数据的连续ID表,快速读取其中指定的某1000条数据?
- 在Silverlight中读取指定URL图片包数据
- asp.net(c#)如何读取上传过程中的.txt文件中的数据,并将其写入数据库的
- ABAP--如何快速从BSEG读取数据
- 在Silverlight中读取指定URL图片包数据
- VB中如何读取txt文件的数据
- 在j2me中读取txt文件数据
- ABAP--如何快速从BSEG读取数据
- 读取xml通过deserialize和linq to sql快速更新数据表