WeG*_*ars 2 delphi text large-data delphi-xe
我希望在我的应用程序中快速显示大文本文件的内容,而无需将整个文件加载到内存中.
其他人如何做到这一点?
Total Commander是一个很棒的工具,拥有一个令人惊叹的内部查看器.它打开任何文件,无论多大,瞬间(或那么快,我无法计时).我在12GB文件上试了一下.显示文件时没有明显的内存使用量(仅约100KB).他们是怎么做到的?
SynEdit - 程序冻结(分钟),因为它将首先解析整个文件,然后它将显示文本.
LargeTextFile
近似滚动条的大小.滚动条连续调整(收缩),直到程序最终读取整个文件(可能需要几分钟).与Total Commander相比,它真的很糟糕.
UltraEdit 32 - 程序冻结(我不得不杀死它,因为我没有耐心(或ram)让完成)
您只需要以块的形式读取文件(例如,通过64KB或128KB的块),然后计算这些块中的行.不要尝试使用整个文档的行(如西尔维斯特提出的那样),但是使用块和偏移量,然后欺骗UI来模拟您不知道行的事实.
滚动条不会跟随行,而是文件中的偏移量,然后是块内.如果移动条形,您将猜测最接近的线条在块中开始和结束.
它的缺点是更容易拥有最大线长度,即大块.TotalCommander将包含很长的行,我想由于它的内部分块算法.