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;

  • 相关阅读:
    linux命令行 238
    C语言语法分析器 238
    有穷自动机的构造与识别 238
    简单词法分析实验报告238许锦沛 238
    javascript获得鼠标的坐标值
    滚动条颜色设置(IE、chrome浏览器)
    获取元素的页面位置,兼容各浏览器
    js闭包的作用
    javascrpt绑定事件之匿名函数
    javascript 函数及作用域
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940675.html
Copyright © 2011-2022 走看看