private boolean unzipModuleData( final File directory, final ModuleZipInfo zipinfo, boolean deleteZip) { try (InputStream is = new BufferedInputStream(new FileInputStream(zipinfo.filename)); ZipInputStream zis = new ZipInputStream(new BufferedInputStream(is))) { ZipEntry entry; while ((entry = zis.getNextEntry()) != null) { String entryName = zipinfo.oldStyle ? removeTopDir(entry.getName()) : entry.getName(); if (!entryName.isEmpty()) { if (entry.isDirectory()) { new File(directory, entryName).mkdir(); } else { int count; byte[] buff = new byte[BUFFER_SIZE]; BufferedOutputStream dest = null; try { OutputStream fos = new FileOutputStream(new File(directory, entryName)); dest = new BufferedOutputStream(fos, BUFFER_SIZE); while ((count = zis.read(buff, 0, BUFFER_SIZE)) != -1) { dest.write(buff, 0, count); } dest.flush(); } finally { if (dest != null) { dest.close(); } } } } } } catch (Exception e) { log.error("Failed to unzip module", e); return false; } finally { directory.delete(); if (deleteZip) { new File(zipinfo.filename).delete(); } } return true; }