public static void createArchive()

in src/main/java/org/apache/netbeans/nbpackage/ArchiveUtils.java [404:435]


    public static void createArchive(ArchiveType archiveType, Path directoryToArchive, Path archiveFile)
            throws IOException, ArchiveException {
        try (OutputStream fileOutputStream = new BufferedOutputStream(Files.newOutputStream(archiveFile));
                ArchiveOutputStream archiveOutputStream = new ArchiveStreamFactory()
                        .createArchiveOutputStream(archiveType.getCommonsCompressName(), fileOutputStream)) {

            if (archiveType == ArchiveType.TAR) {
                ((TarArchiveOutputStream) archiveOutputStream).setLongFileMode(LONGFILE_GNU);
            }

            Files.walkFileTree(directoryToArchive, new SimpleFileVisitor<Path>() {
                @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                    createAndPutArchiveEntry(archiveType, archiveOutputStream, directoryToArchive, file);
                    archiveOutputStream.closeArchiveEntry();
                    return FileVisitResult.CONTINUE;
                }

                @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
                    if (Files.isSameFile(dir, directoryToArchive)) {
                        return FileVisitResult.CONTINUE;
                    }

                    ArchiveEntry entry = archiveOutputStream.createArchiveEntry(dir.toFile(), getRelativePathString(dir, directoryToArchive));
                    archiveOutputStream.putArchiveEntry(entry);
                    archiveOutputStream.closeArchiveEntry();
                    return FileVisitResult.CONTINUE;
                }
            });

            archiveOutputStream.finish();
        }
    }