261/**//
262void CZipImplement::GetRelativePath(CString& pFullPath,CString& pSubString)
263{
264 pSubString = pFullPath.Right(pFullPath.GetLength() - this->m_FolderPath.GetLength() + this->m_FolderName.GetLength());
265}
266
267/**//
268//函数说明:创建多级目录
269//参数说明: [in]:路径字符串
270//返回值: BOOL成功True失败False
271//函数作者:
272//创建日期: 2009-9-28下午04:53:20
273/**//
274BOOL CZipImplement::CreatedMultipleDirectory(wchar_t* direct)
275{
276 std::wstring Directoryname = direct;
277
278 if (Directoryname[Directoryname.length() - 1] != ‘““‘)
279 {
280 Directoryname.append(1, ‘““‘);
281 }
282 std::vector< std::wstring> vpath;
283 std::wstring strtemp;
284 BOOL bSuccess = FALSE;
285 for (int i = 0; i < Directoryname.length(); i++)
286 {
287 if ( Directoryname[i] != ‘““‘)
288 {
289 strtemp.append(1,Directoryname[i]);
290 }
291 else
292 {
293 vpath.push_back(strtemp); 294 strtemp.append(1, ‘““‘);
295 }
296 }
297 std::vector<:wstring>:: const_iterator vIter;
298 for (vIter = vpath.begin();vIter != vpath.end(); vIter++)
299 {
300 bSuccess = CreateDirectory(vIter->c_str(), NULL) ? TRUE :FALSE;
301 }
302
303 return bSuccess;
304}
=====================以上为源代码=====================
简单说明:使用VS2003编写.
2.WinXp sp2下运行测试通过.
3.为了简化算法,使用了很多MFC提供的函数, 如果要移植到标准C++请重新实现部分函数.
4.压缩算法采用了ljw1004 这位高手的算法.
5."zip.h" 和 "unzip.h"以及实现请至 http://www.codeproject.com/KB/files/zip_utils.aspx 下载, 下载的源文件中有示例程序可以参考.将下载后的 zip.h unzip.h zip.cpp unzip.cpp 添加到自己的项目中.