Как преобразовать TBytes в двоичный файл? (используя MemoryStream)
Как я могу конвертировать Tbytes
введите в Binary file
с помощью MemoryStream
?
4 ответа
Решение
Ответ Уве сработает, если у вас есть 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;
Или прямо с 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
здесь полезно, так как это просто связано с дополнительным ненужным выделением / освобождением кучи.
Хорошо, если в ответах упоминается Delphi XE и другие потоки, чем TMemoryStream
Затем я предлагаю еще один метод.
procedure SaveBytesToFile(const Data: TBytes; const FileName: string);
begin
TFile.WriteAllBytes( FileName, Data );
end;
FI в 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;