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).
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).