ZLib 压缩和解压流

//流压缩
procedure CompressStream(InStream, OutStream: TStream; ACompressLevel: TCompressionLevel);
var
  CmpStream: TCompressionStream;
begin
  InStream.Position := 0;
  CmpStream := TCompressionStream.Create(ACompressLevel, OutStream);
  try
    CmpStream.CopyFrom(InStream, 0);
    OutStream.Position := 0;
  finally
    CmpStream.Free;
  end;
end;

//流解压
procedure DeCompressStream(InStream, OutStream: TStream);
var
  DeCmpStream: TDeCompressionStream;
  Buf: array[1..512] of Byte;
  nSrcCount: Integer;
begin
  InStream.Position := 0;
  DeCmpStream := TDeCompressionStream.Create(InStream);
  try
    repeat
      nSrcCount := DeCmpStream.Read(Buf, sizeof(Buf));
      if nSrcCount > 0 then
        OutStream.Write(Buf, nSrcCount);
    until(nSrcCount = 0);
    OutStream.Position := 0;
  finally
    DeCmpStream.Free;
  end;
end;
原文地址:https://www.cnblogs.com/shuaixf/p/1743245.html