下雪的场景写一段话C语⾔解压标准ZIP⽂件到内存
真三国无双6查了很多资料,就直接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应该是把⽂件当成字符串直接压缩处理了。
发布评论