PureBasic
PureBasic
Unzip Some Files by Iterating over Entries
See more Zip Examples
Demonstrates how to unzip specific files by iterating over entries in a .zip.Chilkat PureBasic Downloads
IncludeFile "CkZipEntry.pb"
IncludeFile "CkZip.pb"
IncludeFile "CkStringBuilder.pb"
Procedure ChilkatExample()
success.i = 0
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
zip.i = CkZip::ckCreate()
If zip.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Open a .zip containing:
;
; a1.xml
; b1.xml
; c1.xml
; dir1/a2.xml
; dir1/c2.xml
; dir2/dir3/c3.xml
; We wish to unzip only a1.xml, b1.xml, and c1.xml
success = CkZip::ckOpenZip(zip,"qa_data/zips/xml_files.zip")
If success = 0
Debug CkZip::ckLastErrorText(zip)
CkZip::ckDispose(zip)
ProcedureReturn
EndIf
sbFilename.i = CkStringBuilder::ckCreate()
If sbFilename.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
entry.i = CkZipEntry::ckCreate()
If entry.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
numEntries.i = CkZip::ckNumEntries(zip)
i.i = 0
While i < numEntries
CkZip::ckEntryAt(zip,i,entry)
entryFilePath.s = CkZipEntry::ckFileName(entry)
Debug entryFilePath
If CkZipEntry::ckIsDirectory(entry) = 0
CkStringBuilder::ckSetString(sbFilename,entryFilePath)
If CkStringBuilder::ckContains(sbFilename,"/",0) = 0
; Does not contain "/"
; Unzip to the qa_output directory.
success = CkZipEntry::ckExtract(entry,"qa_output")
If success = 0
Debug "Failed to unzip " + entryFilePath
Else
Debug "Unzipped " + entryFilePath
EndIf
EndIf
EndIf
i = i + 1
Wend
CkZip::ckDispose(zip)
CkStringBuilder::ckDispose(sbFilename)
CkZipEntry::ckDispose(entry)
ProcedureReturn
EndProcedure