Как преобразовать тип Tbytes
в Binary file
с помощью MemoryStream
?
Как преобразовать TBytes в двоичный файл? (используя MemoryStream)
Ответ 1
Ответ Uwe будет работать, если у вас есть TBytesStream. Если нет:
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;
Ответ 2
Или непосредственно с помощью 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;
Я не верю, что использование TMemoryStream
полезно здесь, поскольку оно просто связано с лишним ненужным распределением/освобождением кучи.
Ответ 3
F.I. в Delphi XE:
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;
Ответ 4
Ну, если ответы упоминают Delphi XE и другие потоки, чем TMemoryStream
, тогда я предлагаю еще один метод.
procedure SaveBytesToFile(const Data: TBytes; const FileName: string);
begin
TFile.WriteAllBytes( FileName, Data );
end;