LibJF/libjf-config-compiler-plugin/src/main/java/io/gitlab/jfronny/libjf/config/plugin/util/DefaultZipCompressor.java

31 lines
1.1 KiB
Java

package io.gitlab.jfronny.libjf.config.plugin.util;
import org.apache.tools.zip.Zip64Mode;
import org.apache.tools.zip.ZipOutputStream;
import org.gradle.api.UncheckedIOException;
import java.io.File;
public class DefaultZipCompressor implements ZipCompressor {
private final int entryCompressionMethod;
private final Zip64Mode zip64Mode;
public DefaultZipCompressor(boolean allowZip64Mode, int entryCompressionMethod) {
this.entryCompressionMethod = entryCompressionMethod;
this.zip64Mode = allowZip64Mode ? Zip64Mode.AsNeeded : Zip64Mode.Never;
}
@Override
public ZipOutputStream createArchiveOutputStream(File destination) {
try {
ZipOutputStream zipOutputStream = new ZipOutputStream(destination);
zipOutputStream.setUseZip64(zip64Mode);
zipOutputStream.setMethod(entryCompressionMethod);
return zipOutputStream;
} catch (Exception e) {
String message = String.format("Unable to create ZIP output stream for file %s.", destination);
throw new UncheckedIOException(message, e);
}
}
}