【发布时间】:2014-11-19 02:28:14
【问题描述】:
我正在运行 Delphi RAD Studio XE2。
我有一些非常大的文件,每个文件都包含大量行。线条本身很小 - 只有 3 个制表符分隔的双打。我想使用TStringList.LoadFromFile 将文件加载到TStringList 中,但这会引发大文件的异常。
对于 200 万行(大约 1GB)的文件,我得到 EIntOverflow 异常。对于较大的文件(例如 2000 万行和大约 10GB),我得到 ERangeCheck 异常。
我有 32GB 的 RAM 可以玩,我只是想加载这个文件并快速使用它。这里发生了什么,我还有什么其他选择?我可以使用具有大缓冲区的文件流将此文件加载到 TStringList 中吗?如果可以,请提供一个例子。
【问题讨论】:
-
我只是想知道,你为什么要加载 2000 万行文本?使用
TFileStream可能会有更好的运气。 -
你有一个例子说明如何使用
TFileStream将文本文件的行读入TStringList吗? -
我希望将文件的行存储在数据库的表中。然后操作将比使用 T*List 后代快得多。那么问题是您打算如何处理这些数据?
-
简单地说,真正的解决方案是停止尝试将整个文件加载到内存中。
标签: delphi delphi-xe2 filestream readfile tstringlist