public static void pack(java.io.File sourceDirPath, java.io.File zipFilePath) throws IOException { Path p = Files.createFile(zipFilePath.toPath()); try (ZipOutputStream zs = new ZipOutputStream(Files.newOutputStream(p))) { Path pp = sourceDirPath.toPath(); Files.walk(pp) .filter(path -> !Files.isDirectory(path)) .forEach(path -> { ZipEntry zipEntry = new ZipEntry(pp.relativize(path).toString()); try { zs.putNextEntry(zipEntry); Files.copy(path, zs); zs.closeEntry(); } catch (IOException e) { e.printStackTrace(); } }); } }