Delphi txt文件的操作[2]用流Stream来读取文件
Delphi txt文件的操作[2]用流Stream来读取文件
1、读取全部内容
var
mFileStream: TMemoryStream;
Filebuf: array of PChar; //声明动态数组
iLen: Int64;
begin
iLen := 0;
mFileStream := TMemoryStream.Create;
try
mFileStream.LoadFromFile('TaoRoy.txt');
iLen := mFileStream.Size; //获得指定TXT文件的大小
SetLength(FileBuf, iLen); //设置动态数组的长度为TXT文件的大小
mFileStream.ReadBuffer(FileBuf[0], iLen); //读取TXT文件全部数据
Memo1.Text:=string(FileBuf); // Form1.canvas.Textout(0, 0, string(FileBuf)); //在显示区域上显示字符串;
finally
FreeAndNil(mFileStream);
end;
end;
2、读取指定内容
var
mFileStream: TMemoryStream;
Filebuf: array of PChar; //这里声明的是动态数组
begin
mFileStream := TMemoryStream.Create;
try
mFileStream.LoadFromFile('TaoRoy.txt');
SetLength(FileBuf, 5); //设置动态数组的长度;
mFileStream.Seek(5, soFromBeginning); //从文件头开始计算到5个字节处
mFileStream.ReadBuffer(FileBuf[0], 5); //从seek设置的当前位置往后读取5字节
Memo1.Text:=string(FileBuf); //Form1.canvas.Textout(0, 0, string(FileBuf)); //在窗体上显示;
finally
FreeAndNil(mFileStream);
end;
end;
如果超出会显示错误
关于Seek函数的说明:
function Seek(Offset: Longint; Origin: Word): Longint; override;
//offset 是偏移量;
//origin的值:
// soFromBeginning 偏移量是从内存开始的。搜索移动到偏移位置。偏移量必须大于等于0。
// soFromCurrent 偏移是从当前位置开始的。搜索移动到位置+偏移。
// soFromEndOffset 偏移量是从内存的末尾开始的。偏移量必须小于等于0,以指示内存缓冲区结束前的字节数。
//注意:Seek在检查为偏移量提供的值时不会出错。如果偏移量会将当前位置移动到小于0(内存开始之前)或大于大小(内存缓冲区结束之后),则不要调用seek。
创建时间:2022.03.23 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!