我是靠谱客的博主 大意乐曲,最近开发中收集的这篇文章主要介绍electron 解压zip_xunzip.h 源代码在线查看 - 存C写的zip压缩、解压缩源代码。主要对文件操作 资源下载 虫虫电子下载站...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

// name - name of file to look for inside zip archive// ic - TRUE = case insensitive// index - pointer to index number returned, or -1// ze - pointer to a ZIPENTRY (if ANSI) or ZIPENTRYW struct// (if Unicode) Returns: ZRESULT - ZR_OK if success, otherwise some other value//#ifdef _UNICODE#define FindZipItem FindZipItemW#else#define FindZipItem FindZipItemA#endifZRESULT FindZipItemA(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRY *ze);ZRESULT FindZipItemW(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRYW *ze);// FindZipItem - finds an item by name. ic means 'insensitive to case'.// It returns the index of the item, and returns information about it.// If nothing was found, then index is set to -1 and the function returns// an error code./// UnzipItem() Purpose: Find item by index and unzip it Parameters: hz - handle of open zip archive// index - index number of file to unzip// dst - target file name of unzipped file// len - for memory (ZIP_MEMORY. length of buffer;// otherwise 0// flags - indicates usage, see below; for files, this will be// ZIP_FILENAME Returns: ZRESULT - ZR_OK if success, otherwise some other value//ZRESULT UnzipItem(HZIP hz, int index, void *dst, unsigned int len, DWORD flags);// UnzipItem - given an index to an item, unzips it. You can unzip to:// to a pipe: UnzipItem(hz,i, hpipe_write,0,ZIP_HANDLE);// to a file (by handle): UnzipItem(hz,i, hfile,0,ZIP_HANDLE);// to a file (by name): UnzipItem(hz,i, ze.name,0,ZIP_FILENAME);// to a memory block: UnzipItem(hz,i, buf,buflen,ZIP_MEMORY);// In the final case, if the buffer isn't large enough to hold it all,// then the return code indicates that more is yet to come. If it was// large enough, and you want to know precisely how big, GetZipItem.// Note: zip files are normally stored with relative pathnames. If you// unzip with ZIP_FILENAME a relative pathname then the item gets created// relative to the current directory - it first ensures that all necessary// subdirectories have been created. Also, the item may itself be a directory.// If you unzip a directory with ZIP_FILENAME, then the directory gets created.// If you unzip it to a handle or a memory block, then nothing gets created// and it emits 0 bytes./// CloseZip() Purpose: Close an open zip archive Parameters: hz - handle to an open zip archive Returns: ZRESULT - ZR_OK if success, otherwise some other value//ZRESULT CloseZip(HZIP hz);// CloseZip - the zip handle must be closed with this function.unsigned int FormatZipMessage(ZRESULT code, char *buf,unsigned int len);// FormatZipMessage - given an error code, formats it as a string.// It returns the length of the error message. If buf/len points// to a real buffer, then it also writes as much as possible into there.// These are the result codes:#define ZR_OK 0x00000000 // nb. the pseudo-code zr-recent is never returned,#define ZR_RECENT 0x00000001 // but can be passed to FormatZipMessage.// The following come from general system stuff (e.g. files not openable)#define ZR_GENMASK 0x0000FF00#define ZR_NODUPH 0x00000100 // couldn't duplicate the handle#define ZR_NOFILE 0x00000200 // couldn't create/open the file#define ZR_NOALLOC 0x00000300 // failed to allocate some resource#define ZR_WRITE 0x00000400 // a general error writing to the file#define ZR_NOTFOUND 0x00000500 // couldn't find that file in the zip#define ZR_MORE 0x00000600 // there's still more data to be unzipped#define ZR_CORRUPT 0x00000700 // the zipfile is corrupt or not a zipfile#define ZR_READ 0x00000800 // a general error reading the file// The following come from mistakes on the part of the caller#define ZR_CALLERMASK 0x00FF0000#define ZR_ARGS 0x00010000 // general mistake with the arguments#define ZR_NOTMMAP 0x00020000 // tried to ZipGetMemory, but that only works on mmap zipfiles, which yours wasn't#define ZR_MEMSIZE 0x00030000 // the memory size is too small#define ZR_FAILED 0x00040000 // the thing was already failed when you called this function#define ZR_ENDED 0x00050000 // the zip creation has already been closed#define ZR_MISSIZE 0x00060000 // the indicated input file size turned out mistaken#define ZR_PARTIALUNZ 0x00070000 // the file had already been partially unzipped#define ZR_ZMODE 0x00080000 // tried to mix creating/opening a zip // The following come from bugs within the zip library itself#define ZR_BUGMASK 0xFF000000#define ZR_NOTINITED 0x01000000 // initialisation didn't work#define ZR_SEEK 0x02000000 // trying to seek in an unseekable file#define ZR_NOCHANGE 0x04000000 // changed its mind on storage, but not allowed#define ZR_FLATE 0x05000000 // an internal error in the de/inflation code// e.g. SetCurrentDirectory("c:\docs\stuff");// HZIP hz = OpenZip("c:\stuff.zip",0,ZIP_FILENAME);// ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;// for (int i=0; i// { GetZipItem(hz,i,&ze);// UnzipItem(hz,i,ze.name,0,ZIP_FILENAME);// }// CloseZip(hz);// HRSRC hrsrc = FindResource(hInstance,MAKEINTRESOURCE(1),RT_RCDATA);// HANDLE hglob = LoadResource(hInstance,hrsrc);// void *zipbuf=LockResource(hglob);// unsigned int ziplen=SizeofResource(hInstance,hrsrc);// HZIP hz = OpenZip(zipbuf, ziplen, ZIP_MEMORY);// - unzip to a membuffer -// ZIPENTRY ze; int i; FindZipItem(hz,"file.dat",&i,&ze);// char *ibuf = new char[ze.unc_size];// UnzipItem(hz,i, ibuf, ze.unc_size,ZIP_MEMORY);// delete[] buf;// - unzip to a fixed membuff -// ZIPENTRY ze; int i; FindZipItem(hz,"file.dat",&i,&ze);// char ibuf[1024]; ZIPRESULT zr=ZR_MORE; unsigned long totsize=0;// while (zr==ZR_MORE)// { zr = UnzipItem(hz,i, ibuf,1024,ZIP_MEMORY);// unsigned long bufsize=1024; if (zr==ZR_OK) bufsize=ze.unc_size-totsize;// totsize+=bufsize;// }// - unzip to a pipe -// HANDLE hthread=CreateWavReaderThread(&hread,&hwrite);// FindZipItem(hz,"sound.wav",&i,&ze);// UnzipItem(hz,i, hwrite,0,ZIP_HANDLE);// CloseHandle(hwrite);// WaitForSingleObject(hthread,INFINITE);// CloseHandle(hread); CloseHandle(hthread);// - finished -// CloseZip(hz);// // note: no need to free resources obtained through Find/Load/LockResource// SetCurrentDirectory("c:\docs\pipedzipstuff");// HANDLE hread,hwrite; CreatePipe(&hread,&hwrite);// CreateZipWriterThread(hwrite);// HZIP hz = OpenZip(hread,0,ZIP_HANDLE);// for (int i=0; ; i++)// { ZIPENTRY ze; ZRESULT res = GetZipItem(hz,i,&ze);// if (res!=ZE_OK) break; // no more// UnzipItem(hz,i, ze.name,0,ZIP_FILENAME);// }// CloseZip(hz); Now we indulge in a little skullduggery so that the code works whether// the user has included just zip or both zip and unzip.// Idea: if header files for both zip and unzip are present, then presumably// the cpp files for zip and unzip are both present, so we will call// one or the other of them based on a dynamic choice. If the header file// for only one is present, then we will bind to that particular one.HZIP OpenZipU(void *z,unsigned int len,DWORD flags);ZRESULT CloseZipU(HZIP hz);unsigned int FormatZipMessageU(ZRESULT code, char *buf,unsigned int len);bool IsZipHandleU(HZIP hz);#define OpenZip OpenZipU#ifdef XZIP_H#undef CloseZip#define CloseZip(hz) (IsZipHandleU(hz)?CloseZipU(hz):CloseZipZ(hz))#else#define CloseZip CloseZipU#define FormatZipMessage FormatZipMessageU#endif#endif //XUNZIP_H

最后

以上就是大意乐曲为你收集整理的electron 解压zip_xunzip.h 源代码在线查看 - 存C写的zip压缩、解压缩源代码。主要对文件操作 资源下载 虫虫电子下载站...的全部内容,希望文章能够帮你解决electron 解压zip_xunzip.h 源代码在线查看 - 存C写的zip压缩、解压缩源代码。主要对文件操作 资源下载 虫虫电子下载站...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部