PowerBuilder
PowerBuilder
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 PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Zip
oleobject loo_SbFilename
oleobject loo_Entry
integer li_NumEntries
integer i
string ls_EntryFilePath
li_Success = 0
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
loo_Zip = create oleobject
li_rc = loo_Zip.ConnectToNewObject("Chilkat.Zip")
if li_rc < 0 then
destroy loo_Zip
MessageBox("Error","Connecting to COM object failed")
return
end if
// 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
li_Success = loo_Zip.OpenZip("qa_data/zips/xml_files.zip")
if li_Success = 0 then
Write-Debug loo_Zip.LastErrorText
destroy loo_Zip
return
end if
loo_SbFilename = create oleobject
li_rc = loo_SbFilename.ConnectToNewObject("Chilkat.StringBuilder")
loo_Entry = create oleobject
li_rc = loo_Entry.ConnectToNewObject("Chilkat.ZipEntry")
li_NumEntries = loo_Zip.NumEntries
i = 0
do while i < li_NumEntries
loo_Zip.EntryAt(i,loo_Entry)
ls_EntryFilePath = loo_Entry.FileName
Write-Debug ls_EntryFilePath
if loo_Entry.IsDirectory = 0 then
loo_SbFilename.SetString(ls_EntryFilePath)
if loo_SbFilename.Contains("/",0) = 0 then
// Does not contain "/"
// Unzip to the qa_output directory.
li_Success = loo_Entry.Extract("qa_output")
if li_Success = 0 then
Write-Debug "Failed to unzip " + ls_EntryFilePath
else
Write-Debug "Unzipped " + ls_EntryFilePath
end if
end if
end if
i = i + 1
loop
destroy loo_Zip
destroy loo_SbFilename
destroy loo_Entry