public class ZipUtils { private static final Logger LOGGER = Logger.getLogger(ZipUtils.class.getName()); public static void unzip(final Path zipFile, final Path decryptTo) { try (ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(zipFile))) { ZipEntry entry; while ((entry = zipInputStream.getNextEntry()) != null) { LOGGER.log(Level.INFO, "entry name = {0}", entry.getName()); final Path toPath = decryptTo.resolve(entry.getName()); if (entry.isDirectory()) { Files.createDirectory(toPath); } else { Files.copy(zipInputStream, toPath); } } } catch (IOException e) { LOGGER.log(Level.SEVERE, e.getMessage(), e); } }