}
 
     protected void compressFile(String absolutePath) throws IOException {
-        compressFileCount++;
-        byte byteBuf[] = new byte[2048];
-        zipOutput.putNextEntry(new ZipEntry(absolutePath.substring(relativeAddrIdx)));
-
-        FileInputStream input = new FileInputStream(absolutePath);
-        for (int count = 0; (count = input.read(byteBuf, 0, byteBuf.length)) != -1; )
-            zipOutput.write(byteBuf, 0, count);
-        input.close();
-        zipOutput.closeEntry();
+           try{
+                   compressFileCount++;
+                   byte byteBuf[] = new byte[2048];
+                   zipOutput.putNextEntry(new ZipEntry(absolutePath.substring(relativeAddrIdx)));
+                   FileInputStream input = new FileInputStream(absolutePath);
+                   try{
+                           for (int count = 0; (count = input.read(byteBuf, 0, byteBuf.length)) != -1; )
+                                   zipOutput.write(byteBuf, 0, count);
+                   }finally{
+                           input.close();
+                           zipOutput.closeEntry();
+                   }
+           }catch(IOException e){
+                   throw e;    
+           }           
     }
 
     public void setCompressLevel(int level) {