您可以使用 TFileStream 类打开文件以进行读取,如下所示...
FileStream := TFileStream.Create( 'MyBigTextFile.txt', fmOpenRead)
TFileStream 不是一个引用计数的对象,所以一定要在完成后释放它,就像这样......
FileStream.Free
从现在开始,我将假设您的文件的字符编码是 UTF-8 并且行尾终止是 MS 样式。如果没有,请相应调整,或更新您的问题。
您可以像这样读取 UTF-8 字符的单个代码单元(与读取单个字符不同):
var ch: ansichar;
FileStream.ReadBuffer( ch, 1);
你可以像这样阅读一行文字......
function ReadLine( var Stream: TStream; var Line: string): boolean;
var
RawLine: UTF8String;
ch: AnsiChar;
begin
result := False;
ch := #0;
while (Stream.Read( ch, 1) = 1) and (ch <> #13) do
begin
result := True;
RawLine := RawLine + ch
end;
Line := RawLine;
if ch = #13 then
begin
result := True;
if (Stream.Read( ch, 1) = 1) and (ch <> #10) then
Stream.Seek(-1, soCurrent) // unread it if not LF character.
end
end;
要读取第 2、3 和 4 行,假设位置在 0 ...
ReadLine( Stream, Line1);
ReadLine( Stream, Line2);
ReadLine( Stream, Line3);
ReadLine( Stream, Line4);