You still have an OutputStream to the file open. That means that Windows disallows renaming, deleting, etc. You can't delete or rename a file in Java unless all streams etc to it are closed. Also, the file to rename to cannot exist yet.
if zos.close(); throwns an exception then oldzip isn't closed.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.