Возможно, замените следующие две строки:;
fis.close(); zos.closeEntry();
Я могу представить, что closeEntry () все равно будет считывать некоторые данные из потока.