31 lines
1.1 KiB
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);
|
|
}
|
|
}
|
|
}
|