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 文件查找记录类型 - tsearchrec

Delphi ado 连接 excel (附excel各个版本的版本号)

Delphi 防止程序重复执行(多种方法)

Delphi windows 编程[10] - wm_lbuttondown、wm_lbuttonup 和 wm_mousemove 消息

Delphi 获取当前系统版本号

Delphi getwindowhandle

Delphi使用idhttp.get('') 造成假死(堵塞),请问线程idhttp怎么才能做到不出错?

Delphi使用idhttp模拟提交页面方法总结

Delphi setprivilege 提权代码

Delphi搜索文件夹和文件

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



打赏

取消

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

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

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

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

评论

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