关于 Delphi 中流的使用(7) 压缩与解压缩(TCompressionStream、TDecompressionStream)

关于 Delphi 中流的使用(7) 压缩与解压缩(TCompressionStream、TDecompressionStream),第1张

概述关于 Delphi 中流的使用(7) 压缩与解压缩(TCompressionStream、TDecompressionStream) unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type 关于 Delphi 中流的使用(7) 压缩与解压缩(TCompressionStream、TDecompressionStream)
unit Unit1;interfaceuses  windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,  Dialogs,StdCtrls;type  TForm1 = class(TForm)    button1: Tbutton;    button2: Tbutton;    procedure button1Click(Sender: TObject);    procedure button2Click(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}uses Zlib; {压缩流 TCompressionStream 与解压缩流 TDecompressionStream 来自 Zlib 单元}//压缩procedure TForm1.button1Click(Sender: TObject);var  cs: TCompressionStream; {定义压缩流}  fs,ms: TMemoryStream;   {fs 是要压缩的流; ms 是接收压缩后文件的流}  num: Integer;           {原始文件大小}begin  {第一步: 调入要压缩的文件,并获取大小}  fs := TMemoryStream.Create;  fs.LoadFromfile('c:\temp\test.txt'); {文件要存在啊}  num := fs.Size;  {第二步: 建立接收的流,并先写入原始文件大小}  ms := TMemoryStream.Create;  ms.Write(num,SizeOf(num));  {第三步: 压缩}  cs := TCompressionStream.Create(clMax,ms); {参数1是压缩比; 参数2是接收流}  fs.SavetoStream(cs); {传入要压缩的数据}  cs.Free;             {压缩流 Free 后才真正完成压缩,所以提前 Free}  {第四步: 保存}  ms.Savetofile('c:\temp\test.zipx');  {第五步: 释放}  ms.Free;  fs.Free;{压缩比参数:  clNone    无压缩  clFastest 快速  clDefault 默认  clMax     最大比例}end;//解压缩procedure TForm1.button2Click(Sender: TObject);var  ds: TDecompressionStream; {解压流}  fs,ms: TMemoryStream;     {fs 是准备要解压的流; ms 是接受解压数据的流}  num: Integer;             {接受文件压缩前的大小}begin  {第一步: 准要解压的文件}  fs := TMemoryStream.Create;  fs.LoadFromfile('c:\temp\test.zipx'); {必须是上一个压缩方法生成的文件}  {第二步: 读出文件压缩前的大小}  fs.position := 0;  fs.ReadBuffer(num,SizeOf(num));  {第三步: 准备好要接收的流,并设置需要的大小}  ms := TMemoryStream.Create;  ms.SetSize(num);  {第四步: 解压}  ds := TDecompressionStream.Create(fs); {参数是要解压的流}  {第五步: 把解压后的数据读出存放到已准备好接收的流}  ds.Read(ms.Memory^,num);  {第六步: 保存}  ms.Savetofile('c:\temp\test2.txt');  ds.Free;  ms.Free;  fs.Free;end;end.
总结

以上是内存溢出为你收集整理的关于 Delphi 中流的使用(7) 压缩与解压缩(TCompressionStream、TDecompressionStream)全部内容,希望文章能够帮你解决关于 Delphi 中流的使用(7) 压缩与解压缩(TCompressionStream、TDecompressionStream)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1274916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存