Removing a file from a zip

BlitzMax Forums/BlitzMax Programming/Removing a file from a zip

plash(Posted 2008) [#1]
Apparently in pub.zipengine (gman's module) when you add a stream/file to a zip it does not overwrite an already existing file of the same name.
Does anyone know how to remove a file from a zip?


Arowx(Posted 2008) [#2]
You could just ...

1. unzip the whole set of files to memory banks
2. delete the unwanted file/memory bank
3. rezip and save with the new file

In effect that's probably what any zip engine would be doing under the hood, to delete a file.


plash(Posted 2008) [#3]
That would take longer then necessary in most cases (large zip.)

gman?!


popcade(Posted 2008) [#4]
Technically you have to do this when delete a file inside zip. it actually does this:

1.Get document list/index from the end of the zip.
2.Copy the data to a new temp file and ignore the unnecessary part.
3.Rewrite file list/index at the end of temp zip file.
4.Delete the orignal zip file.
5.Rename the temp zip to the original file name.

It's still pretty time-consuming on large zips, but still faster than solid archives(in the case you need to re-compress every bits).


plash(Posted 2008) [#5]
Bleh.. zipengine should still manage overwriting the current file though.