当前位置:首页 > 技能相关 > PowerBuilder > 正文内容

PB 实现文件和文件夹压缩、解压缩(含目录)方法demo

admin3年前 (2022-07-04)PowerBuilder5980 修订时间:2022-07-04 17:01:17

PB 9.0 实现文件目录压缩以及解压缩相对麻烦些,以下通过方法可实现如上需求:

一、引入外部DLL函数

//将文件SrcFile添加到压缩文档ZipFile
Function long MyZip_AddFile(String SrcFile,ref string ZipFile )  LIBRARY "MyZip.dll"
//从ZipFile中将由SrcName指定的文件解包到由DstName指定的目标文件
Function long MyZip_ExtractFile( String ZipFile,string srcName,ref string DstName)  LIBRARY "MyZip.dll"

//将目录SrcPath里的所有文件(子目录)添加到压缩文档ZipFile
Function long MyZip_AddDirectory( string SrcPath,ref string ZipFile)  LIBRARY "MyZip.dll"
//将ZipFile中包含的所有文件解包到文件夹PathName (解压无目录信息)
Function long MyZip_ExtractFileAll( String ZipFile,ref string PathName) LIBRARY "MyZip.dll"

//压缩文件ZIP 
//参数:strSourceFileName(如果有多个文件,文件全路径请用"|"符号分隔) strZipFileName ZIP文件路径 IsKeepPaths 是否保持文件路径
//strRootDir 相对于文件目录的压缩路径 trPassword 压缩密码
function boolean ZipTo(string strSourceFileName,string strZipFileName,boolean IsKeepPaths,string strRootDir,string strPassword) Library 'wfZip.dll';

//解压缩ZIP文件 参数:strZipFileName ZIP文件路径 strDirectoryPath 解压到的目录 IsKeepPaths 布尔型,是否保持文件路径 strPassword 压缩密码
function boolean UnZipTo(string strZipFileName,string strDirectoryPath,boolean IsKeepPaths,string strPassword) Library 'wfZip.dll';

上述引入了Myzip.dll与wfZip.dll 两个动态链接库,Myzip.dll 用来压缩目录,该链接库的解压无法保留目录信息。所以使用wfZip.dll 的解压函数实现文件的解压(该链接库压缩仅能压缩2个文件,不采用);

二、使用函数

1、MyZip_AddDirectory(ls_path,ls_path_size)   压缩目录  

2、UnZipTo(ls_path_size,ls_path,true,'')             解压文件

三、示例代码

1、压缩

string ls_path
string ls_path_size
long ll_i
//压缩目录路径
ls_path = sle_1.text
//压缩文件路径含文件名.后缀
ls_path_size = sle_2.text
ll_i = MyZip_AddDirectory(ls_path,ls_path_size)
//大于0 执行成功 小于0 执行失败
if ll_i < 0 then
	messagebox('','压缩失败!')
else 
	messagebox('','压缩成功!')
end if

2、解压

string ls_path
string ls_path_size
boolean lb_i
//解压到XX目录
ls_path = sle_3.text
//解压的文件绝对路径
ls_path_size = sle_2.text
lb_i = UnZipTo(ls_path_size,ls_path,true,'')
// true 解压成功  false 解压失败
if lb_i = false then
	messagebox('','解压失败!')
else 
	messagebox('','解压成功!')
end if

四、附件

PBtozip demo

Myzip.dll与说明.zip

wfzip.dll与说明.zip

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/index.php?id=202

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。