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;

  • 相关阅读:
    ros 使用命令测试topic
    python unicode
    python ros 回充demo
    python ros 回充调用demo
    flask报错No module named 'flask.ext'
    python flask 接口
    ros 安装c++编译的可执行文件
    Linux-Ubuntu14.04下mongodb安装部署
    如何在Ubuntu 14.04中安装最新版Eclipse
    ubuntu 14.04 安装redis5.0.3
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940675.html
Copyright © 2011-2022 走看看