const
BufSize = $F000;
var
Buffer: TBytes;
ReadCount: Integer;
begin
if Stream.Size = -1 then // 大小未知则一直读取到没有数据为止
begin
SetLength(Buffer, BufSize);
repeat
ReadCount := Stream.Read(Buffer[0], BufSize);
if ReadCount > 0 then
FS.WriteBuffer(Buffer[0], ReadCount);
if ReadCount < BufSize then
break;
until ReadCount < BufSize;
end else // 大小已知则直接复制数据
FS.CopyFrom(Stream, 0);
Result := True;