C语言解压标准ZIP文件到内存
C语⾔解压标准ZIP⽂件到内存谎言歌词
查了很多资料,就直接baidu “C语⾔怎么解压ZIP⽂件”,被坑了⼀把,说使⽤库zlib,然后去压缩zip⽂件,解压zip⽂件,我做了⼀些测试,然后就发现 —— 完全解压不了好吧我的压缩包中⼀般只有⼀个⽂件,有的时候会有两个⽂件,但是使⽤gzOpen也
好,uncompress也好,都解压不了,gzOpen会显⽰⼤⼩⼀致,uncompress良⼼⼀点,会给⼀个-3的返回值,告诉你的⽂件有损坏。
但是我的⽂件在解压⼯具下是可以解压的,最后没有办法,到了⼀个开源的C语⾔解压zip的⼯具的源码,然后把⾥⾯的代码扒出来⼀看,发现使⽤的是下⾯的api:
unzFile zFile;
zFile = unzOpen64(_fileName);
unzOpenCurrentFile(zFile);
彼的拼音
NULL_ERROR(_fileName, "the filename is empty\n");
OPEN_FILE_ERROR(zFile, "bzFile is failed\n");
汽车品牌排名
this->_readSize = unzReadCurrentFile(zFile, this->_Data, 120 * 1024 *    1024);
unzCloseCurrentFile(zFile);
国庆去哪里玩
三皇五帝指的是哪三皇哪五帝READ_FILE_ERROR(this->_readSize, "readSize is smaller\n");
论语十则的翻译使⽤unzOpen64 获取⽂件描述符之后,使⽤unzOpenCurrent打开⽂件,后就可以读了,不管是⼀次性直接读出来还是写个while循环读都可以,api就是unzReadCurrentFile。
读完之后记得关掉,API: unzCloseCurrentFile
然后回头再去看gzopen和uncompress,发现其实⼈家也没有错,只不过⼈家是把整个⽂件都做了⼀个压缩,然后你会发现使⽤compress函数压缩之后,是⽤⼀般的解压软件解压不了的,必须使⽤uncompress来解压。换句话说compress应该是把⽂件当成字符串直接压缩处理了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。