使用ZLIB生成DLL文件,并进行有中文的ZIP文件压缩与解压操作!支持目录压与解!

原创 2012年03月28日 17:14:30

借鉴ZLibWrap.DLL进行二次加工生成DLL文件,在C++builder中进行动态调用DLL,压缩与解压标准ZIP文件操作!

因为有中文操作需要多出一个参数,所以要使用两份,本来准备写类,用构造函数,但发现有点大才小用,就使用COPY一份代码了!


DLL文件下载

http://download.csdn.net/detail/goodai007/4182207

DLL两个接口:

//压缩,bUtf8为false将支持路径与文件内包含中文

BOOL ZWZipCompress(LPCTSTR lpszSourceFiles, LPCTSTR lpszDestFile, bool bUtf8 = false);

//解压
BOOL ZWZipExtract(LPCTSTR lpszSourceFile, LPCTSTR lpszDestFolder);


bool __fastcall DoZipfile(String DoZip,String ZipFilename,String SourceFile,bool Check)
{
	bool ZipReturn=false;
	WideString w1;//必需要这样申请WideString变量,不然传值时会让两个变量使用同一样内存地址,搞了3个小时才发现这是BCB2006的BUG.
	WideString w2;
	LPCTSTR L1;//必需使用这个格式的变量,不然传过去到DLL时乱码。
	LPCTSTR L2;
	if(DoZip=="ZWZipCompress")//压缩
	{
		w1=SourceFile;
		w2=ZipFilename;
		L1=(const char*)w1.c_bstr();
		L2=(const char*)w2.c_bstr();
		bool __stdcall (*DllMethods)(LPCTSTR,LPCTSTR,bool);
		HINSTANCE hInst=NULL;
		hInst=LoadLibrary((ExtractFilePath(Application->ExeName)+"ZLibWrap.dll").c_str());//动态加载DLL
		FARPROC P;
		P = GetProcAddress(hInst,DoZip.c_str());
		DllMethods=(bool __stdcall (__cdecl *)(LPCTSTR,LPCTSTR,bool))P;
		if(DllMethods){
			ZipReturn=DllMethods(L1,L2,Check);
		}
		FreeLibrary(hInst);
		return ZipReturn;
	}else if(DoZip=="ZWZipExtract")//解压
	{
		w1=ZipFilename;
		w2=SourceFile;
		L1=(const char*)w1.c_bstr();
		L2=(const char*)w2.c_bstr();
		bool __stdcall (*DllMethods)(LPCTSTR,LPCTSTR);
		HINSTANCE hInst=NULL;
		hInst=LoadLibrary((ExtractFilePath(Application->ExeName)+"ZLibWrap.dll").c_str());//当前目录下的DLL文件
		FARPROC P;
		P = GetProcAddress(hInst,DoZip.c_str());
		DllMethods=(bool __stdcall (__cdecl *)(LPCTSTR,LPCTSTR))P;
		if(DllMethods){
			ZipReturn=DllMethods(L1,L2);
		}
		FreeLibrary(hInst);
		return ZipReturn;
	}
}

调用方法:

压缩目录:

	bool Check=true;
	if(CheckBox1->Enabled)
	Check=false;//false支持中文
	String DoZip="ZWZipCompress";
	String ZipFilename=Edit1->Text;
	String SourceFile=Edit2->Text;
	if(DoZipfile(DoZip,ZipFilename,SourceFile,Check)){
		ShowMessage("压缩成功!");
	}else{
		ShowMessage("压缩失败!");
	}

解压目录:

	bool Check=true;
	if(CheckBox1->Enabled)
	Check=false;//false支持中文
	String DoZip="ZWZipExtract";
	String ZipFilename=Edit1->Text;
	String SourceFile=Edit2->Text;
	if(DoZipfile(DoZip,ZipFilename,SourceFile,Check)){
		ShowMessage("解压成功!");
	}else{
		ShowMessage("解压失败!");
	}


版权声明:本文为博主原创文章,未经博主允许不得转载。

Zip解压库 zlibwrap

http://zlibwrap.codeplex.com/ zlibwrap基于Zlib //-----------------------------------------------...
  • yunque100
  • yunque100
  • 2011年12月30日 18:47
  • 1044

[zlib]_[初级]_[使用Zlib完整解压zip内容]

场景: 1. 解压文件一般用在下载了一个zip文件之后解压,或者分析某个文件需要解压的操作上. 2. 解压文件,特别是解压带文件夹的zip文件往往系统没有提供这类Win32 API,当然C#自带库...
  • infoworld
  • infoworld
  • 2015年06月26日 12:24
  • 3196

[Zlib]_[初级]_[使用zlib库解压提取文件]

场景: 1. zlib库跨平台,Windows和MacOSX都可以使用,还支持64位编译,轻量级,没有不用的道理。 2. 处理.zip,apk,docx文件时,因为这类文件都是zip格式,使用zlib...
  • infoworld
  • infoworld
  • 2015年03月28日 16:12
  • 7107

使用zlib库解压*.zip文件

1.编辑zlib静态库 1)实现zip文件压缩和解压的zlib库部分代码(基于zlib-1.2.5) 这是zlib-1.2.5源码:http://download.csdn.net/download/...
  • sunxianliang1
  • sunxianliang1
  • 2016年08月08日 14:47
  • 3531

Zlib库的使用实现对zip文件的解压缩

实习项目中涉及到获取GigEVision设备的XML设备描述文件 A GigE Vision device MUST have an XML device description with the s...
  • ljh0302
  • ljh0302
  • 2015年12月23日 09:30
  • 4152

使用zlib解压标准zip文件

zlib库可以解压zip压缩数据,但是在做标准zip文件解压的时候发现会出现问题,原因其实是因为zlib的压缩格式与标准zip的压缩格式有那么一点区别,最初这个问题让我很纠结,在经过实验后,我将标准z...
  • wishfly
  • wishfly
  • 2015年06月08日 09:53
  • 1905

解压zip文件到当前目录

public static boolean unZipFile(String pathName, String toPath) { File desFile = null; try { Lo...
  • duxiufang
  • duxiufang
  • 2017年02月04日 16:38
  • 369

Java zip,rar解压中文文件,以及包含在文件夹中的中文文件

之前在网上找解压zip和rar的代码 多多少少有些问题,不是中文乱码就是解压多级菜单会报错,然后自己写了两个,目前还没遇到bug...
  • baidu_32133993
  • baidu_32133993
  • 2016年10月25日 15:11
  • 906

使用Objective-Zip解压Zip文件

最近在一个iOS项目中需要对Zip文件进行解压缩,发现了一个很好用的包——Objective-Zip(http://code.google.com/p/objective-zip/),Objectiv...
  • geniuslinchao
  • geniuslinchao
  • 2011年09月22日 12:01
  • 7025

使用Zlib库进行文件的压缩和解压

zlib介绍 zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libp...
  • JasonDing1354
  • JasonDing1354
  • 2015年01月13日 14:52
  • 5690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用ZLIB生成DLL文件,并进行有中文的ZIP文件压缩与解压操作!支持目录压与解!
举报原因:
原因补充:

(最多只允许输入30个字)