欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap 谈天说地
   您现在位于: 首页技术专栏开发语言 → 正文
块读写文本方法
08-01-27 00:00:00 作者:stephenmax 出处:http://hi.baidu.com/stephenmax

用的是分块读入或写入的方式,虽然占用内存,但在海量文本文件处理时,对磁盘i/o造成的瓶颈,有相当的改善,部分算法取自TStrings.

抱歉,贴出来以后,缩进都乱套了,我本来很注意缩进的

基类TFileParser ,另外还有几个文件读写类从这个类派生,此处不再一一贴上。这些文件解析类其实有个管理器TFileParserManager,在此也不再贴上

unit uniFileParser;
{$I Include.inc}
interface
uses
Classes;

type
{ TFileParser }

TFileParser = class(TObject)
private
protected
    FManager:TObject;
    FFileName:string;
public
    function Open(const FileName: string):Boolean;virtual;abstract;
    procedure Close;virtual;abstract;
    function Save(const FileName: string):Boolean;virtual;abstract;
    function Flush:Boolean;virtual;abstract;

    constructor Create(AManager:TObject);
    destructor Destroy; override;
published
    property FileName:string read FFileName;
end;

implementation
uses
uniFileParserManager;
{ TFileParser }

constructor TFileParser.Create(AManager: TObject);
begin
FManager:=AManager;
end;

destructor TFileParser.Destroy;
begin
if Assigned(FManager)then   //当开发者直接用了free时,这里来弥补;建议调用管理器的delete过程
begin
    TFileParserManager(FManager).AbandonFileParser(Self);
end;
inherited;
end;

end.

 

单元,子类TMemDelimitedTextFile

感觉写的有点乱,以后有空时再改进吧,反正好用就成

unit uniDelimitedTextFile;
{$I Include.inc}
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
uniFileParser;
type
TStringArray=array of string;
TDelimitedTextDealType=(dtdtClosed,dtdtRead,dtdtWrite);
{ TDelimitedTextFile }

TCustomDelimitedTextFile = class(TFileParser)
private

protected
    FLastError:string;
    FImportItem:TStringList;
    FFileSi

9 7 3 1 2 3 4 5 6 7 8 9 4 8 :

(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  
    无相关新闻

    关于我们 友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.

                   滇ICP备05006901号