[C/C++]_[初级]_[使用zlib库压缩文件](二)
2014-11-24 13:26:19
·
作者:
·
浏览: 75
e_buf); for (int i = 0; i < size; ++i) { FILE * fin; int size_read; const char* filenameinzip = files_[i].c_str(); const char *savefilenameinzip; zip_fileinfo zi; unsigned long crcFile=0; int zip64 = 0; zi.tmz_date.tm_sec = zi.tmz_date.tm_min = zi.tmz_date.tm_hour = zi.tmz_date.tm_mday = zi.tmz_date.tm_mon = zi.tmz_date.tm_year = 0; zi.dosDate = 0; zi.internal_fa = 0; zi.external_fa = 0; filetime(filenameinzip,&zi.tmz_date,&zi.dosDate); savefilenameinzip = filenameinzip; const char* pos = NULL; if( (pos = strrchr(savefilenameinzip,'\\')) || (pos = strrchr(savefilenameinzip,'/')) ) { pos++; }else { pos = savefilenameinzip; } err = zipOpenNewFileInZip3_64(zf,pos,&zi, NULL,0,NULL,0,NULL, (opt_compress_level != 0) Z_DEFLATED : 0, opt_compress_level,0, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, NULL,crcFile, zip64); if (err != ZIP_OK) { printf("error in opening %s in zipfile\n",pos); } else { fin = ZipFopen(filenameinzip,"rb"); if (fin==NULL) { err=ZIP_ERRNO; printf("error in opening %s for reading\n",filenameinzip); } } if (err == ZIP_OK) do { err = ZIP_OK; size_read = (int)fread(buf,1,size_buf,fin); if (size_read < size_buf) { if (feof(fin)==0) { printf("error in reading %s\n",filenameinzip); err = ZIP_ERRNO; } } if (size_read>0) { err = zipWriteInFileInZip (zf,buf,size_read); if (err<0) { printf("error in writing %s in the zipfile\n", filenameinzip); } } } while ((err == ZIP_OK) && (size_read>0)); if(fin) { fclose(fin); } if (err<0) { err=ZIP_ERRNO; } else { err = zipCloseFileInZip(zf); if (err!=ZIP_OK) { printf("error in closing %s in the zipfile\n",filenameinzip); } } } errclose = zipClose(zf,NULL); if (errclose != ZIP_OK) { printf("error in closing %s\n",output_path); return false; } return true; }
注意: 再链接项目时如果报错, 那么就是因为你没加预编译宏 ZLIB_WINAPI
1>zip_helper.obj : error LNK2001: 无法解析的外部符号 _zipClose