ZipArchive压缩包的使用

 v 源代码包:ZipArchive,生成动态链接库(DLL)
 v 此DLL依赖的lib文件:szlib.lib; zlib.lib
 v 使用ZipArchive的工程需要添加动态链接库及相关头文件
 v 封装对ZipArchive包的操作:CRoleZip类
  ○ 主要成员变量:m_zipFile/m_tempDirectory
  ○ 主要成员函数:PackFiles/UnpackFiles
 v 压缩文件

 主要代码:

View Code
 1   //检测文件是否存在
 2   CZipArchive zip;
 3   If(zip.FileExists(m_zipFile))
 4   {
 5    DeleteFile(m_zipFile);
 6   }
 7  //创建文件
 8   zip.Open(m_zipFile, CZipArchive::create, 1457500);
 9  //压缩文件
10   CFileFind fileFind;
11   BOOL b = fileFind.FindFile(tempDirectory); 
12   CString pathFile;
13   while (b)
14   {
15    b = fileFind.FindNextFile();  
16    pathFile = fileFind.GetFileName();
17    if (fileFind.IsDots())
18     continue;
19  
20    if ( !fileFind.IsDirectory())  
21    {
22     zip.AddNewFile(pathFile, -1, false);
23    }
24   }
25   //关闭
26   zip.Close();

 

 

   v 解压文件

 主要代码:

  //打开
  CZipArchive    zipArchive;
   zipArchive.Open(m_zipFile, CZipArchive::open, 0 );
  //获取文件数目
  CDWordArray da ;
  int count = zipArchive.GetNoEntries() ;
  for(int k = 0 ; k < count ; k++)
   da.Add(k) ; 
 //解压文件 
  for (int i = 0; i < da.GetSize(); i++)
  {
   zipArchive.ExtractFile((WORD)da[i],m_tempDirectory , true, NULL, NULL, NULL);   
  }
 //关闭
  zipArchive.Close();

  v 问题及解决
  ○ 加入zipArchive之后,需要编译两次才能成功
  因为link里注册了输出,将”register output“项置为no。
  ○ 压缩之后包含目录下所有的文件
  将压缩类的临时文件夹设为用户选择的目录下添加的一个temp文件夹,而不是用户选择的目录,并且每次使用时清空一下。

 

posted @ 2013-03-14 12:58  知音  阅读(458)  评论(0编辑  收藏  举报