Dav*_*nan 28
或者直接用a TFileStream来减少创建的中间对象的数量:
procedure SaveBytesToFile(const Data: TBytes; const FileName: string);
var
Stream: TFileStream;
begin
Stream := TFileStream.Create(FileName, fmCreate);
try
if Data <> nil then
Stream.WriteBuffer(Data[0], Length(Data));
finally
Stream.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
我不相信使用TMemoryStream在这里有用,因为它只涉及额外的不必要的堆分配/释放.
Mas*_*ler 12
如果您有TBytesStream,Uwe的答案将会有效.如果不:
procedure SaveBytesToFile(const Data: TBytes; const FileName: string);
var
stream: TMemoryStream;
begin
stream := TMemoryStream.Create;
try
if length(data) > 0 then
stream.WriteBuffer(data[0], length(data));
stream.SaveToFile(FileName);
finally
stream.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
在Delphi XE中的FI:
procedure SaveBytesToFile(const Data: TBytes; const FileName: string);
var
stream: TBytesStream;
begin
stream := TBytesStream.Create(Data);
try
stream.SaveToFile(FileName);
finally
stream.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
好吧,如果答案提到Delphi XE和其他流TMemoryStream,那么我建议另外一种方法.
procedure SaveBytesToFile(const Data: TBytes; const FileName: string);
begin
TFile.WriteAllBytes( FileName, Data );
end;
Run Code Online (Sandbox Code Playgroud)