delphi 利用VCLZip实现分卷压缩


本文整理自网络,侵删。

 function   Zip(ZipMode,PackSize:Integer;ZipFile,UnzipDir:String):Boolean;   //压缩或解压缩文件
var
  ziper:TVCLZip;
begin
  //函数用法:Zip(压缩模式,压缩包大小,压缩文件,解压目录)
  //ZipMode为0:压缩;为1:解压缩       PackSize为0则不分包;否则为分包的大小
  try
    if   copy(UnzipDir,   length(UnzipDir),   1)   =   '/ '   then
      UnzipDir   :=   copy(UnzipDir,   1,   length(UnzipDir)   -   1);   //去除目录后的“/”
    ziper:=TVCLZip.Create(application);     //创建zipper
    ziper.DoAll:=true;                      //加此设置将对分包文件解压缩有效
    ziper.OverwriteMode:=Always;            //总是覆盖模式
    if   PackSize <> 0   then   begin       //如果为0则压缩成一个文件,否则压成多文件
      ziper.MultiZipInfo.MultiMode:=mmBlocks;           //设置分包模式
      ziper.MultiZipInfo.SaveZipInfoOnFirstDisk:=True;  //打包信息保存在第一文件中
      ziper.MultiZipInfo.FirstBlockSize:=PackSize;      //分包首文件大小
      ziper.MultiZipInfo.BlockSize:=PackSize;           //其他分包文件大小
    end;
    ziper.FilesList.Clear;
    ziper.ZipName   :=   ZipFile;           //获取压缩文件名
    if   ZipMode=0   then   begin           //压缩文件处理
      ziper.FilesList.Add(UnzipDir+ '/*.* ');   //添加解压缩文件列表
      Application.ProcessMessages;              //响应WINDOWS事件
      ziper.Zip;                                //压缩
    end   else   begin
      ziper.DestDir:=   UnzipDir;               //解压缩的目标目录
      ziper.UnZip;                              //解压缩
    end;
    ziper.Free;                             //释放压缩工具资源
    Result:=True;                           //执行成功
  except
    Result:=False;                          //执行失败
  end;
end;

相关阅读 >>

Delphi 打开android应用信息

Delphi drawing text 绘制文本

Delphi关于小数位精度的问题

Delphi文件监视主单元文件

winapi 字符及字符串函数(10): lstrcpy - 复制字符串

Delphi dateutils.ispm - 判断时间是否是下午

Delphi emptyrecycle() 清空回收站

Delphi如何生成一段时间内的所有日期

Delphi使用zlib压缩和解压文件

delpni-xe5-android sdk api 层次结构

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...