亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > C++ > 正文

C++怎么直接讀取到zip文件列表

2020-02-24 14:38:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

// ZipFile.h
//
#ifndef ZIPFILE_H
#define ZIPFILE_H
#include
#include
#define ZIP_OK 0
#define ZIP_ERR_OPEN 1
#define ZIP_ERR_WRONG_FILE 2
#define ZIP_ERR_WRONG_HEADER 3
#define BYTE unsigned char
#define ui32 unsigned int
#define ui16 unsigned short
struct FileHeader
{
ui32 signature;
ui16 version_made_by;
ui16 version_needed;
ui16 bitflags;
ui16 comp_method;
ui16 lastModFileTime;
ui16 lastModFileDate;
ui32 crc_32;
ui32 comp_size;
ui32 uncompr_size;
ui16 fname_len;
ui16 extra_field_len;
ui16 fcomment_len;
ui16 disk_num_start;
ui16 internal_fattribute;
ui32 external_fattribute;
ui32 relative_offset;
char* file_name;
char* extra_field;
char* file_comment;
};
class TT_0_TTZipFile
{
private:
public:
C++ZipFile();
CZipFile(std::string);
virtual ~CZipFile();
void ResetContent(void);
std::string GetFileName(void);
void SetFileName(std::string);
bool OpenFile(void);
int GetFilesNumber(void);
FileHeader * GetFileAttributes(int);
private:
void ReadCentralDirectory(BYTE * data,long len);
int ReadFileHeader(BYTE * data, FileHeader * hdr);
ui32 ReadValue(unsigned char * buf, int nbits);
std::string m_FileName;
std::vector m_FileAttributes;
};
#endif /*ZIPFILE_H */
//
// ZipFile.cpp : implementation file
//
#include
#include
#include
#include "ZipFile.h"
using namespace std;
/////////////////////////////////////////////////////////////////////////////
// CZipFile
CZipFile::CZipFile()
{
m_FileName="";
}
CZipFile::CZipFile(string fn)
{
m_FileName = fn;
}
CZipFile::~CZipFile()
{
ResetContent();
}
void CZipFile::ResetContent(void)
{
for(int i=0;i delete(GetFileAttributes(i));
m_FileAttributes.clear();
m_FileName="";
}
string CZipFile::GetFileName(void)
{
return m_FileName;
}
void CZipFile::SetFileName(string fn)
{
m_FileName = fn;
}
int CZipFile::GetFilesNumber(void)
{
return (m_FileAttributes.size());
}
bool CZipFile::OpenFile(void)
{
if(m_FileName=="")
return ZIP_ERR_OPEN;
//read all the file data
FILE * fp;
fp=fopen(m_FileName.c_str(),"rb");
if(fp==NULL)
return ZIP_ERR_OPEN;
fseek(fp,0,SEEK_END);
long siz=ftell(fp);
fseek(fp,0,SEEK_SET);
BYTE *buf=new BYTE[siz];
ui32 n= fread((void*) buf,(unsigned int)siz,1,fp);
fclose(fp);
//local file header signature control to check the file correctiveness
if(*((ui32*)buf)!=0x04034b50)
return ZIP_ERR_WRONG_FILE;
ReadCentralDirectory(buf,siz);
return ZIP_OK;
}
void CZipFile::ReadCentralDirectory(BYTE * data,long len)
{
/*read the central Directory Data Structure;
data contains the zipped archive;
return the number of files read*/
BYTE * tmp;
//search the signature
tmp=data;
ui32 * tmp2;
tmp2= (ui32 *)tmp;
len-=4;
while((*tmp2)!=0x02014b50 && len)
{
tmp++;
tmp2= (ui32 *)tmp;
len--;
}
//retrieve the FileHeader for each file
int siz;
do
{
FileHeader fhdr;
siz = ReadFileHeader(tmp, &fhdr);
if(siz)
{
FileHeader *pfhdr = new(FileHeader);
*pfhdr=fhdr;
m_FileAttributes.push_back(pfhdr);
}
tmp+=siz;
}while(siz!=0);
}
int CZipFile::ReadFileHeader(BYTE * data, FileHeader * hdr)
{
/*Name: int CZipFile::ReadFileHeader(BYTE * data, CString* stData)
/*It read the file header in the Central Directory Structure
Return the number of bytes read; if the stream does not contain
a valid local_file_header 0 is returned and the stream pointer (f)
is not modified
st is filled with all the data;
*/
BYTE * origdata=data;
// FileHeader hdr;
//fill the values into the file_header structure
hdr->signature = (ui32) ReadValue(data ,32);
if(hdr->signature!=0x02014b50)
return 0; //no further file
hdr->version_made_by = (ui16) ReadValue(data+4 ,16);
hdr->version_needed = (ui16) ReadValue(data+6 ,16);
hdr->bitflags = (ui16) ReadValue(data+8 ,16);
hdr->comp_method = (ui16) ReadValue(data+10,16);
hdr->lastModFileTime = (ui16) ReadValue(data+12,16);
hdr->lastModFileDate = (ui16) ReadValue(data+14,16);
hdr->crc_32 = (ui32) ReadValue(data+16,32);
hdr->comp_size = (ui32) ReadValue(data+20,32);
hdr->uncompr_size = (ui32) ReadValue(data+24,32);
hdr->fname_len = (ui16) ReadValue(data+28,16);
hdr->extra_field_len = (ui16) ReadValue(data+30,16);
hdr->fcomment_len = (ui16) ReadValue(data+32,16);
hdr->disk_num_start = (ui16) ReadValue(data+34,16);
hdr->internal_fattribute = (ui16) ReadValue(data+36,16);
hdr->external_fattribute = (ui32) ReadValue(data+38,32);
hdr->relative_offset = (ui32) ReadValue(data+42,32);
data+=46;
if(hdr->fname_len>0)
{
char *fn;
fn=new (char[hdr->fname_len+1]);
strncpy(fn,(char*)data,hdr->fname_len);
fn[hdr->fname_len]='/0';
hdr->file_name = fn;
data+=hdr->fname_len;
}
if(hdr->extra_field_len>0)
{
char *fn;
fn=new (char[hdr->extra_field_len+1]);
strncpy(fn,(char*)data,hdr->extra_field_len);
fn[hdr->extra_field_len]='/0';
hdr->extra_field = fn;
data += hdr->extra_field_len;
}
//file comment
if(hdr->fcomment_len>0)
{
char *fn;
fn=new (char[hdr->fcomment_len+1]);
strncpy(fn,(char*)data,hdr->fcomment_len);
fn[hdr->fcomment_len]='/0';
hdr->file_comment = fn;
data += hdr->extra_field_len;
}
return (data-origdata);
}
ui32 CZipFile::ReadValue(unsigned char * buf, int nbits)
{
/*Name: void ReadValue(char*buf, int nbits)
/*Return the value read from the buffer of size nbits;
*/
ui32 value = 0;
switch (nbits)
{
case (8):
value = (ui32)*(buf);
break;
case(16):
value = (((ui32)*(buf+1)) break;
case(24):
value = (((ui32)*(buf+2)) break;
case(32):
value = (((ui32)*(buf+3)) break;
default:
assert(1);
break;
}
return(value);
}
FileHeader *CZipFile::GetFileAttributes(int index)
{
if(indexm_FileAttributes.size())
return NULL;
else
return((FileHeader *)m_FileAttributes.at(index));
}
//main.cpp
#include
#include "ZipFile.h"
int main(int argc , char* argv[])
{
if(2 != argc)
{
printf("zipFile must provide./n");
return 0;
}
CZipFile zipTest;
zipTest.SetFileName(argv[1]);
zipTest.OpenFile();
for(int i = 0;i {
printf("%s/n", zipTest.GetFileAttributes(i)->file_name);
}
return 0;
}

以上就是關(guān)于C++怎么直接讀取到zip文件列表的全部?jī)?nèi)容,感謝大家的閱讀,更多內(nèi)容請(qǐng)關(guān)注武林技術(shù)頻道網(wǎng)站。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
成人免费在线观看网站| 久久久久久久一区二区三区| 无遮挡爽大片在线观看视频| 青青青在线视频免费观看| 97精品国产91久久久久久| 蜜桃视频一区二区| 色妞ww精品视频7777| 中文字幕在线观看日本| 亚洲国产欧美一区二区三区不卡| 国内精品久久久久久久久久| 亚洲+小说+欧美+激情+另类| 中文字幕在线观看av| 成人做爰66片免费看网站| 国产日本在线视频| 精品调教chinesegay| 老熟妇高潮一区二区三区| 欧美综合在线观看视频| 欧美影院久久久| 欧美在线视频免费播放| 亚洲精品aa| 中国黄色片视频| av线上观看| 97视频在线观看播放| 18视频免费网址在线观看| 精品日韩一区| 999国产精品999久久久久久| 99re8在线精品视频免费播放| 中文在线字幕av| 久久久精品国产**网站| av大全在线观看| 亚洲精品tv久久久久久久久| 国产精品久久久久久免费| 精品国产乱码一区二区三区四区| 亚洲永久视频| 亚洲国产精品久久人人爱潘金莲| 国产乱码精品一区二区三区精东| 日日夜夜精品视频免费| 老司机久久99久久精品播放免费| www..69.hd| 国产高清中文字幕在线| 国产白浆在线免费观看| 无码人妻精品一区二区蜜桃网站| 97国产真实伦对白精彩视频8| 五月天丁香花婷婷| 日本少妇xxx| 成人日批视频| 极品少妇一区二区三区精品视频| 一本久道综合久久精品| 欧美国产日韩a欧美在线观看| 欧美黑人xxx| 小早川怜子一区二区的演员表| 国产精品臀控福利在线观看| 二区三区四区视频| 第一福利永久视频精品| 97超碰国产一区二区三区| 美女诱惑一区二区| 我的公把我弄高潮了视频| www.日日操| 色中色综合影院手机版在线观看| 熟女高潮一区二区三区| 国模少妇一区二区三区| 欧洲vodafone精品| 亚洲va国产va欧美va观看| 国产精品久久综合av爱欲tv| 欧美一区免费观看| 丰满人妻一区二区三区免费| 国产福利免费观看| 成人免费播放器| 久久精品亚洲| 日日噜噜夜夜狠狠久久波多野| 日本一区二区视频在线观看| 青青草原网站在线观看| 国产高清在线免费观看| 找av导航入口| 国产网站无遮挡| 亚洲三级在线观看| 亚洲国产精品高清| 亚洲精品久久久久久动漫器材一区| 欧美福利第一页| 99re在线视频免费观看| av在线免费网址| 国产精品人成电影在线观看| free性欧美hd另类精品| 免费在线黄网站| 亚洲一区二区三区无吗| 日本韩国欧美中文字幕| 欧美国产极速在线| 在线观看视频黄色| 亚洲精品久久久| av亚洲男人天堂| 国产精品久久久久9999| 国产ts人妖一区二区| 亚洲卡通欧美制服中文| 精品久久久av| av香蕉成人| 日本手机在线视频| 久久久免费观看视频| 9191久久久久久久久久久| 午夜影院免费体验区| 欧美14一18处毛片| 97电影在线| av福利网址网站| 色综合视频一区二区三区44| 精品国偷自产一区二区三区| 日日干日日操日日射| 超碰在线网站| 日韩成人在线网站| 欧美精品久久久久久久久46p| 无国产精品白浆是免费| 老司机在线精品视频| 91久久久免费一区二区| wwwww在线观看免费视频| 久久精品免费一区二区| 蜜桃tv一区二区三区| 亚洲男人第一天堂| 国产精品私房写真福利视频| 国产suv精品一区二区6| 欧美优质美女网站| 成人女人免费毛片| 丁香资源影视免费观看| 成人黄18免费网站| 亚洲aⅴ乱码精品成人区| 色综合久久综合网欧美综合网| a级片在线免费| 久久在线视频精品| 亚洲精品久久久久久久久久久| 欧美精选在线播放| 丁香婷婷在线| 久久中文字幕一区| 性欧美69式xxxxx| 日韩经典中文字幕一区| 亚洲在线欧美| 亚洲自拍一区在线观看| 亚洲国产精品精华液网站| 国产精品久久久久久久久久东京| 成人性生交xxxxx网站| a天堂中文在线官网在线| 999精品网站| 欧美精品一本久久男人的天堂| 久久一级黄色片| 中文字幕不卡在线视频极品| 国产成人精品免费看在线播放| 午夜欧美不卡精品aaaaa| 国产喷水在线观看| 欧美日韩国产小视频在线观看| 日日欢夜夜爽一区| 亚洲欧美一区二区三区极速播放| 久久久亚洲欧洲日产国码αv| 日韩欧美成人精品| 日韩高清av一区二区三区| 国产美女在线一区| 久久久久久久久久久久电影| 国产suv一区二区三区| 激情综合视频| 欧美一区二区观看视频| 久久久男人的天堂| 91蝌蚪视频九色| 国产二区视频在线观看| 九九热99视频| 4hu四虎永久网址| 中文在线a天堂| 免费人成又黄又爽又色| 天天色天天射综合网| 色播色播色播色播色播在线| 日本1区2区3区视频| 精品久久sese| 欧美 中文字幕| 涩涩网在线视频| 91啦中文在线观看| 亚洲欧美日韩国产综合| 91丨porny丨在线中文| 欧美熟妇交换久久久久久分类| 国产在线一区观看| 日韩欧美精品一区二区综合视频| 男人的天堂日韩| 天天久久综合网| 轻点好疼好大好爽视频| 26uuuu精品一区二区| 无码人妻精品一区二区三区66| 女人黄色一级片| 色婷婷在线观看视频| 性欧美大战久久久久久久| 欧美精品成人91久久久久久久| 国产免费www| 夜夜春成人影院| www.神马久久| 久久视频在线直播| 天天干天天操天天玩| 亚洲一区av在线| 欧美v日韩v国产v| 国产狂喷白浆在线观看视频| 久久要要av| 欧美激情日韩图片| 亚洲欧美日本在线观看| 在线小视频网址| 国产精品久久久久9999高清| 99久久精品久久亚洲精品| 中国日本在线视频中文字幕| 在线观看黄色小视频| 99riav国产精品视频| 国产经典av| 中文字幕天天干| 亚洲精品成人久久电影| 伊人亚洲综合网| 美女国产精品久久久| 亚洲18在线| 久久成人久久爱| 天天操天天干天天| 久草手机视频在线观看| 91色p视频在线| 久久av一区二区三区亚洲| 亚洲激情电影在线| 黄色国产一级视频| 无码人妻熟妇av又粗又大| 国产欧美日韩综合精品| 欧美v在线观看| 亚洲线精品一区二区三区八戒| 日韩在线第三页| 四虎海外永久免费网址| 奇米影视首页 狠狠色丁香婷婷久久综合| 亚洲一级片网站| 又黄又爽毛片免费观看| 精品夜夜澡人妻无码av| 天堂在线中文字幕| 欧美日韩精品一区二区三区在线观看| 亚洲午夜精品一区 二区 三区| 亚州精品永久观看视频| 私库av在线播放| 一区二区三区免费视频网站| 天美一区二区三区| 国产精品久久久久av电视剧| 97精品高清一区二区三区| 亚洲国产剧情在线观看| 久久久噜噜噜久久中文字免| 中文天堂在线视频| 欧美在线视频不卡| 免费看黄色a级片| 免费一区二区三区视频狠狠| 三上悠亚亚洲一区| 欧洲视频一区| 亚洲男人天堂2020| 亚洲男人天堂2021| 国产成人精品免费看视频| 国产成人aaaa| 99久久精品国产网站| 亚洲成人第一页| 国产精品免费久久久| 伊人久久大香线蕉av一区二区| 日本中文字幕精品| 男女全黄做爰文章| 久久全球大尺度高清视频| 天天躁日日躁aaaa视频| 国内精品久久久久久久果冻传媒| 成人av一区二区三区| 好吊妞国产欧美日韩免费观看网站| 国产一精品一av一免费爽爽| 日本道免费精品一区二区三区| 精品人妻一区二区三区四区| 国产小视频在线| 精品国产乱码久久| 亚洲激情校园春色| 一区二区三区自拍| 国产黄大片在线观看| xxx亚洲日本| 日韩高清a**址| 在线观看麻豆蜜桃| 无国产精品白浆免费视| 人妻少妇一区二区三区| av在线播放亚洲| 五月婷婷六月丁香激情| 一区二区三区欧洲区| 国产成人综合视频| 亚洲男人的天堂在线aⅴ视频| 好男人www社区在线视频夜恋| 午夜精品一区二区在线观看的| 亚洲欧洲日本专区| 九色|91porny| 国产精品视频xxx| 噼里啪啦国语在线观看免费版高清版| 九九精品视频在线| 黑人巨大精品欧美黑白配亚洲| 韩国视频一区二区| 日韩动漫在线观看| 欧美hd在线| 免费在线一级片| 亚洲精品久久| 国产一区网站| heyzo一区| 国产精品有限公司| 精品无码人妻一区| 欧美性suv| 国产成人影院| 青青青在线播放| 羞羞色院91蜜桃| 激情深爱一区二区| 欧美日韩精品综合在线| 成人av资源站| 欧美性黄网官网| 国产精品一区二区91| 人妻少妇一区二区三区| www国产精品内射老熟女| 男男一级淫片免费播放| 免费福利视频一区二区三区| 樱空桃在线播放| 国产日本视频| 亚洲无码久久久久久久| 精品一区免费观看| 国精产品一区一区三区四川| 亚洲日韩色图| 国产精品免费久久久久影院| 一区二区乱码| 日本久久精品| 秋霞无码一区二区| a4yy在线播放免费观看视频| 奇米影视首页 狠狠色丁香婷婷久久综合| 成人精品一区二区三区电影免费| 99999精品视频| 在线一区高清| 顶级网黄在线播放| 污网站免费在线观看| 在线视频欧美精品| 久久精彩视频| 综合图区亚洲白拍在线| 男女羞羞电影免费观看| 98精品国产自产在线观看| 久久一区二区三区视频| 免费在线看黄色片| 高h视频在线观看|