public static boolean unpackFileFromZip(Path zipfile, String filename, Path destDirectory) throws IOException {
        boolean ret = true;

        byte[] bytebuffer = new byte[BUFFERSIZE];
        ZipInputStream zipinputstream = new ZipInputStream(new FileInputStream(zipfile.toFile()));

        ZipEntry zipentry;
        while ((zipentry = zipinputstream.getNextEntry()) != null) {
            if (zipentry.getName().equals(filename)) {
                Path newFile = destDirectory.resolve(zipentry.getName());
                FileOutputStream fileoutputstream = new FileOutputStream(newFile.toFile());

                int bytes;
                while ((bytes = zipinputstream.read(bytebuffer)) > -1) {
                    fileoutputstream.write(bytebuffer, 0, bytes);
                }

                fileoutputstream.close();
                zipinputstream.closeEntry();
                zipinputstream.close();

                return ret;
            }

            zipinputstream.closeEntry();
        }

        zipinputstream.close();

        return ret;
    }