delphi 快速加载大型日志文件
delphi现在逐行读取日志文件,但是文件很大,所以想先加载一小部分,用户在看的时候继续在后台加载剩下的部分,请问要怎么实现呢...
delphi 现在逐行读取日志文件,但是文件很大,所以想先加载一小部分,用户在看的时候继续在后台加载剩下的部分,请问要怎么实现呢
展开
2个回答
展开全部
方式1:
var F: TextFile;
Assign(F, 'filename');
Reset(F);
Readln(F, S);
...
CloseFile(F);
弊端:一直占用文件句柄,直至关闭。
方式2:
SL: TStringList;
SL := TStringList.Create;
SL.LoadFromFile(filename);
...
SL.Clear;
SL.Free;
弊端:加载时可能会占用一些时间,并且文件全部读取到内存可能会开销不少内存。
var F: TextFile;
Assign(F, 'filename');
Reset(F);
Readln(F, S);
...
CloseFile(F);
弊端:一直占用文件句柄,直至关闭。
方式2:
SL: TStringList;
SL := TStringList.Create;
SL.LoadFromFile(filename);
...
SL.Clear;
SL.Free;
弊端:加载时可能会占用一些时间,并且文件全部读取到内存可能会开销不少内存。
追问
第一种方式还有个缺点就是用户如果去找某条日志,然而这条日志在文件末端,逐行读取效率就很低。而第二种方式显然,当日至文件比较大时,全部读取进来就会耗时很多,会让用户受不了
追答
日志文件如果做了索引,或者自动分割成比较小的文件,情况就会好很多。这是最初的设计缺陷导致的不良后果。其实日志文件也不是很常用,就像视频监控备份的视频一样,只有需要追溯历史的时候才会打开看。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询