private static void extractZipEntry()

in src/main/java/org/apache/netbeans/nbpackage/ArchiveUtils.java [334:355]


    private static void extractZipEntry(Path extractToDirectory, InputStream archiveInputStream, ZipArchiveEntry entry)
            throws IOException {
        Path entryExtractPath = extractToDirectory.resolve(getEntryAsPath(entry));

        if (entry.isUnixSymlink()) {
            final byte[] contentBuffer = new byte[8192];
            final int contentLength = IOUtils.readFully(archiveInputStream, contentBuffer);
            Path linkTarget = Paths.get(new String(contentBuffer, 0, contentLength, StandardCharsets.UTF_8));
            Files.deleteIfExists(entryExtractPath);
            Files.createSymbolicLink(entryExtractPath, linkTarget);
        } else {
            if (entry.isDirectory()) {
                Files.createDirectories(entryExtractPath);
            } else {
                Files.createDirectories(entryExtractPath.getParent());
                Files.copy(archiveInputStream, entryExtractPath, StandardCopyOption.REPLACE_EXISTING);
            }
        }
        setLastModifiedTime(entryExtractPath, entry.getLastModifiedTime());
        Set<PosixFilePermission> permissions = getPosixFilePermissions(entry);
        setPosixPermissions(entryExtractPath, permissions);
    }