zoukankan      html  css  js  c++  java
  • 流的压缩和解压

     1 uses
     2   Zlib;
     3 
     4 //压缩函数
     5 procedure Zip(var fs: TMemoryStream);
     6 var
     7   cs: TCompressionStream;
     8   ms: TMemoryStream;
     9   num: Integer;
    10 begin
    11   if not(Assigned(fs) and (fs.Size>0)) then Exit;
    12 
    13     num := fs.Size;
    14     ms := TMemoryStream.Create;
    15     cs := TCompressionStream.Create(clMax, ms);
    16   try
    17     fs.SaveToStream(cs);
    18     cs.Free;
    19     //ms.Position := 0;
    20     fs.Clear;
    21     fs.WriteBuffer(num, sizeof(num));
    22     fs.CopyFrom(ms, 0);
    23   finally
    24     ms.Free;
    25   end;
    26 end;
    27 
    28 //解压函数
    29 procedure UnZip(var fs: Tmemorystream);
    30 var
    31   ds: TDecompressionStream;
    32   ms: TMemoryStream;
    33   num: Integer;
    34 begin
    35   if not(Assigned(fs) and (fs.Size>0)) then Exit;
    36 
    37   fs.Position := 0;
    38   fs.ReadBuffer(num,sizeof(num));
    39   ms := TMemoryStream.Create;
    40   ds := TDecompressionStream.Create(fs);
    41   try
    42     ms.SetSize(num);
    43     ds.Read(ms.Memory^, num);
    44     //ms.Position := 0;
    45     fs.Clear;
    46     fs.CopyFrom(ms, 0);
    47   finally
    48     ds.Free;
    49     ms.Free;
    50   end;
    51 end;
  • 相关阅读:
    spring 事务
    spring jdbc学习1
    css学习2
    css学习1
    spring aop 学习1
    spring学习1
    jQuery学习笔记1
    JavaScript学习笔记1
    springboot+quartz+vue+socket实现的定时任务加任务日志实时查看
    hadoop hbase数据备份异常
  • 原文地址:https://www.cnblogs.com/jieke/p/2934207.html
Copyright © 2011-2022 走看看