我正在处理非常大的文本文件,2GB 甚至更多。我想要一个类似 Seek() 的函数。有人做过类似的事情吗?加载到 TStringList 是不可能的。也可以处理非类型化文件。目前我正在使用 readLn,但持续时间太长。谢谢。
最佳答案
将文件分段映射到内存(CreateFileMapping/MapViewOfFile),然后扫描映射的内存并构建一个索引 - 每行开头的位置列表。然后,您的查找操作将通过获取文件中第 N 行的位置并查找到该位置来执行。然后使用 TFileStream 对文件执行随机访问,或者,如果您只读取文件,也可以使用文件映射进行随机访问 - 这可能比并行使用 TFileStream 与文件映射更快。
关于delphi - 寻找文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717621/