zoukankan      html  css  js  c++  java
  • 流的压缩与解压缩函数

    uses Zlib;

    //压缩函数
    procedure Zip(var fs: TMemoryStream);
    var
      cs: TCompressionStream;
      ms: TMemoryStream;
      num: Integer;
    begin
      if not(Assigned(fs) and (fs.Size>0)) then Exit;

        num := fs.Size;
        ms := TMemoryStream.Create;
        cs := TCompressionStream.Create(clMax, ms);
      try
        fs.SaveToStream(cs);
        cs.Free;
        //ms.Position := 0;
        fs.Clear;
        fs.WriteBuffer(num, sizeof(num));
        fs.CopyFrom(ms, 0);
      finally
        ms.Free;
      end;
    end;

    //解压函数
    procedure UnZip(var fs: Tmemorystream);
    var
      ds: TDecompressionStream;
      ms: TMemoryStream;
      num: Integer;
    begin
      if not(Assigned(fs) and (fs.Size>0)) then Exit;

      fs.Position := 0;
      fs.ReadBuffer(num,sizeof(num));
      ms := TMemoryStream.Create;
      ds := TDecompressionStream.Create(fs);
      try
        ms.SetSize(num);
        ds.Read(ms.Memory^, num);
        //ms.Position := 0;
        fs.Clear;
        fs.CopyFrom(ms, 0);
      finally
        ds.Free;
        ms.Free;
      end;
    end;


    //压缩测试
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ms: TMemoryStream;
    begin
      ms := TMemoryStream.Create;
      ms.LoadFromFile('c:/temp/test.txt');
      Zip(ms);
      ms.SaveToFile('c:/temp/test.zipx');
    end;

    //解压测试
    procedure TForm1.Button2Click(Sender: TObject);
    var
      ms: TMemoryStream;
    begin
      ms := TMemoryStream.Create;
      ms.LoadFromFile('c:/temp/test.zipx');
      UnZip(ms);
      ms.SaveToFile('c:/temp/test2.txt');
    end;

  • 相关阅读:
    性能分析与调优思想
    python散列实现映射抽象数据类型
    python接口模拟100个用户登录
    大O记法
    linux查看操作系统版本信息
    Python招聘信息
    flask-login模块官网内容整理
    python|base|环境搭建
    echarts|map
    mysql|unsigned 与 signed 类型
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940675.html
Copyright © 2011-2022 走看看