在Delphi中,有一些用于处理流(stream)的类和单元。以下是一些常用的流处理类:
- TFileStream :
-
单元:
System.Classes
-
用途:用于读写文件流的类。可以进行文件的读取和写入操作。
var FileStream: TFileStream; Buffer: TBytes; FilePath: string; const SomeData: string = 'Hello, FileStream!'; begin try // 指定文件路径 FilePath := 'C:\File.txt'; // 创建一个 TFileStream 实例,以读写方式打开文件 // 如果文件不存在,会自动创建一个新文件 FileStream := TFileStream.Create(FilePath, fmOpenReadWrite or fmCreate); try Buffer := TEncoding.UTF8.GetBytes(SomeData); // 写入数据到流,同时会生成File.txt文件 FileStream.WriteBuffer(Buffer, Length(Buffer)); // 将文件指针移动到文件的开头 FileStream.Seek(0, soBeginning); // 读取数据从流 SetLength(Buffer, FileStream.Size); FileStream.ReadBuffer(Buffer, Length(Buffer)); // 显示读取的数据 ShowMessage(TEncoding.UTF8.GetString(Buffer)); finally // 关闭并释放 TFileStream FileStream.Free; end; except on E: Exception do Writeln('Error: ', E.Message); end; end;
- TMemoryStream :
- 单元:
System.Classes
- 用途:用于在内存中创建和操作流的类。可以用于在内存中存储和操作数据。
var
MemoryStream: TMemoryStream;
Buffer: TBytes;
const
SomeData: string = 'Hello, MemoryStream!';
begin
try
// 创建一个 TMemoryStream 实例
MemoryStream := TMemoryStream.Create;
try
// 写入数据到内存流
Buffer := TEncoding.UTF8.GetBytes(SomeData);
MemoryStream.WriteBuffer(Buffer, Length(Buffer));
// 将内存流的位置设置为开头
MemoryStream.Position := 0;
// 读取数据从内存流中
SetLength(Buffer, MemoryStream.Size);
MemoryStream.ReadBuffer(Buffer, Length(Buffer));
// 显示读取的数据
ShowMessage(TEncoding.UTF8.GetString(Buffer));
finally
// 关闭并释放 TMemoryStream
MemoryStream.Free;
end;
except
on E: Exception do
Writeln('Error: ', E.Message);
end;
end;
- TStringStream :
- 单元:
System.Classes
- 用途:用于在内存中存储和操作字符串流的类。可以方便地对字符串进行读取和写入。
var
StringStream: TStringStream;
Text: string;
const
SomeData: string = 'Hello, TStringStream!';
begin
try
// 创建一个 TStringStream 实例,传递初始字符串
StringStream := TStringStream.Create(SomeData, TEncoding.UTF8);
try
// 读取字符串流中的数据
Text := StringStream.DataString;
// 显示读取的数据
ShowMessage(Text);
// 将字符串流的位置设置为开头
StringStream.Position := 0;
// 写入数据到字符串流
StringStream.WriteString('New data written to TStringStream');
// 读取更新后的字符串流中的数据
Text := StringStream.DataString;
// 显示读取的数据
ShowMessage(Text);
finally
// 关闭并释放 TStringStream
StringStream.Free;
end;
except
on E: Exception do
Writeln('Error: ', E.Message);
end;
end;