Sample code for 30+ languages & platforms
Tcl Requires Chilkat v11.0.0+

Replace/Update a FIle in a .zip

See more Zip Examples

Demonstrates how to replace/update a file from a .zip. Note: This requires the entire .zip to be rewritten.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

#  This requires the Chilkat Zip API to have been previously unlocked.
#  See Unlock Chilkat Zip for sample code.

#  First prepare a .zip and write it..
set zip [new_CkZip]

CkZip_NewZip $zip "qa_output/abc.zip"

#  Add some files..
set charset "utf-8"
CkZip_AddString $zip "a.txt" "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" $charset
CkZip_AddString $zip "b.txt" "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" $charset
CkZip_AddString $zip "c.txt" "cccccccccccccccccccccccccccccccccccc" $charset

#  Write to qa_output/abc.zip
#  This .zip contains three files: a.txt, b.txt, and c.txt
set success [CkZip_WriteZipAndClose $zip]

#  -------------------------------------------------------------------
#  Open abc.zip, replace the content of the "b.txt" entry with something else, and re-write.
set zip2 [new_CkZip]

CkZip_OpenZip $zip2 "qa_output/abc.zip"

set entry [new_CkZipEntry]

if {[CkZip_EntryOf $zip2 "b.txt" $entry] == 1} then {
    CkZipEntry_ReplaceString $entry "This is the new content.  bbbbbbbbbbbbbbbbbbbbbb" "utf-8"
}

#  Write the modified .zip back to "abc.zip"
set success [CkZip_WriteZipAndClose $zip2]

puts "success."

delete_CkZip $zip
delete_CkZip $zip2
delete_CkZipEntry $entry