Delphi 快速读取TXT 指定行的数据
http://blog.csdn.net/MichaelJScofield/article/details/41869785
Delphi 快速读取TXT 指定行的数据
分类:Delphi个人挫品
(3138) (0)
继上次的问题。在提取了大量的Email 数据后。现在读取数据成了一个问题。今天我取过1~100w的数据。明天我要取100w~200w的数据。在不用数据库的情况下,我搞了一个下午。Delphi Tstringlist 和 textfile 的简单读取是满足不了的。Tstringlist加载不了大数据。普通的textfile 读取指定行,必须循环count到指定行。
想了一下午,然后想到另类点的解决方法。先对齐数据,每行规定一样的长度。比如每行是 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;
Delphi 快速读取TXT 指定行的数据的更多相关文章
- 快速读取TXT几百万行数据, 然后插入到数据,SqlBulkCopy功能的确是有效率
public static void Main(string[] args) { string strPath = "F:\\Download\\600.txt"; int lin ...
- python3读取文件指定行的三种方案
技术背景 考虑到深度学习领域中的数据规模一般都比较大,尤其是训练集,这个限制条件对应到实际编程中就意味着,我们很有可能无法将整个数据文件的内容全部都加载到内存中.那么就需要一些特殊的处理方式,比如:创 ...
- python接口自动化测试--数据分离读取Excal指定单元格数据
上一篇博客讲了怎么批量读取Excal单元格数据,现在咱们说一下怎么读取Excal指定单元格数据. 一.首先建一个Test_Main类 #!/usr/bin/python # -*- coding: U ...
- Python笔记(读取txt文件中的数据)
在机器学习中,常常需要读取txt文本中的数据,这里主要整理了两种读取数据的方式 数据内容 共有四列数据,前三列为特征值,最后一列为数据标签 40920 8.326976 0.953952 3 1448 ...
- python读取文件指定行内容
python读取文件指定行内容 import linecache text=linecache.getline(r'C:\Users\Administrator\Desktop\SourceCodeo ...
- Newtonsoft.Json读取txt文件中json数据并存到SQL service 数据库!
using System; using System.Collections.Generic; using System.Text; using System.IO; using Newtonsoft ...
- Java读取Excel指定列的数据详细教程和注意事项
本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...
- SQL Server获取指定行的数据
SQL Server获取指定行(如第二行)的数据 --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , numbe ...
- Pandas 如何通过获取双(多)重索引获取指定行DataFrame数据
图片看不清楚的话,可以右键选择:“在新标签页中打开图片(I)” 参数 df.loc[(a,b),c]中第一个参数元组为索引内容,a为level0索引对应的内容,b为level1索引对应的内容 因为df ...
随机推荐
- Mybatis-学习笔记(1)SqlSessionFactory、SqlSession、Mybatis配置文件configuration的属性标签
1.mybatis引入项目,只需要引入mybatis-x.x.x.jar包即可. (当然数据库驱动的引入必不可少) 2.SqlSessionFactory 由SqlSessionFactoryBuil ...
- [APIO2019] [LOJ 3146] 路灯 (cdq分治或树状数组套线段树)
[APIO2019] [LOJ 3146] 路灯 (cdq分治或树状数组套线段树) 题面 略 分析 首先把一组询问(x,y)看成二维平面上的一个点,我们想办法用数据结构维护这个二维平面(注意根据题意这 ...
- Django:django-debug-toolbar模块
简介: Django的django-debug-toolbar 模块是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息. GitHub源文件下载地址 ...
- 解决GitHub push项目——Push failed: Unable to access 'https://********.git/': Failed to connect to 127.0.0.1 port 1080: Connection refused
解决方法: 第一步:在git中设置http代理 git config --global http.proxy 第二步:在git中取消http代理 git config --global --unset ...
- 07http基础
1.http协议 1.1 概念 是对浏览器和服务器端数据传输格式的规范! 1.2 http协议内容 请求 GET /bbs/hello HTTP/1.1 # 请求行 Host: localhost:8 ...
- psexec远程重启服务器
1 使受控机器支持远程psexec 管理 暂参照其他教程 2 打开远程命令行 3 重启服务执行net命令 停止远程桌面 net stop termservice 启动远程桌面 net start te ...
- 前端经典布局:Sticky footer 布局
什么是Sticky footer布局?前端开发中大部分网站,都会把一个页面分为头部区块.内容区块.页脚区块,这也是比较.往往底部都要求能固定在屏幕的底部,而非随着文档流排布.要实现的样式可以概括如下: ...
- 如何使您的Wifi路由器更安全,网络安全专家告诉您!
中国知名“黑客”教父,网络安全专家郭盛华曾说过,Wifi路由器这样设置最安全.因为无线路由器都有不同的接口,不同的设置方式以及可以调整的不同设置.在本文中,我将探讨TP-LinkArcher的界面.您 ...
- git log的个性化设置
--date=(relative|local|default|iso|rfc|short|raw) Only takes effect for dates shown in human-readabl ...
- man uname
UNAME(1) User Commands/用户命令 UNAME(1) NAME/名称 uname - print system information/打 ...