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();
}
}