#include<wx/filesys.h>#include<wx/zipstrm.h>#include<wx/wfstream.h>#include<memory.h>boolunzip(constwxString&zip_path,constwxString&target_dir){boolresult=true;wxFileInputStreamin(zip_path);wxZipInputStreamzip(in);wxZipEntry*entry;entry=zip.GetNextEntry();while(entry!=NULL){wxStringname=entry->GetName();wxStringtarget_file_path=target_dir+wxFileName::GetPathSeparator()+name;// Directory or File ?if(entry->IsDir()==true){intperm=entry->GetMode();wxFileName::Mkdir(target_file_path,perm,wxPATH_MKDIR_FULL);}else{zip.OpenEntry(*entry);if(zip.CanRead()==false){_LOG(wxT("Can not read zip entry: ")+name);result=false;break;}wxFileOutputStreamfile(target_file_path);zip.Read(file);}deleteentry;entry=zip.GetNextEntry();}returnresult;}