(Tcl) List Files in Zip using FirstEntry/NextEntry
Demonstrates how to iterate over the files and directories in a zip archive using the FirstEntry and NextEntry functions.
load ./chilkat.dll
# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
set zip [new_CkZip]
set success [CkZip_OpenZip $zip "qa_data/zips/xml_files.zip"]
if {$success != 1} then {
puts [CkZip_lastErrorText $zip]
delete_CkZip $zip
exit
}
# entry is a CkZipEntry
set entry [CkZip_FirstEntry $zip]
if {[CkZip_get_LastMethodSuccess $zip] == 0} then {
puts "This zip archive is empty."
delete_CkZip $zip
exit
}
set finished 0
while {$finished == 0} {
if {[CkZipEntry_get_IsDirectory $entry] == 0} then {
puts [CkZipEntry_fileName $entry]
} else {
puts "(directory) [CkZipEntry_fileName $entry]"
}
# next is a CkZipEntry
set next [CkZipEntry_NextEntry $entry]
if {[CkZipEntry_get_LastMethodSuccess $entry] == 0} then {
set finished 1
}
delete_CkZipEntry $entry
set entry $next
}
# Sample output showing both file and directory entries:
# a1.xml
# b1.xml
# c1.xml
# (directory) dir1/
# dir1/a2.xml
# dir1/c2.xml
# (directory) dir2/
# (directory) dir2/dir3/
# dir2/dir3/c3.xml
delete_CkZip $zip
|