zip
Here is a simple example of how to use Compress4J to create and extract zip files:
Example Usage
Zip Creation
try (ZipArchiveCreator zipCreator = ZipArchiveCreator.builder(Path.of("example.zip"))
.compressionLevel(9)
.compressionMethod(ZipCompressionMethod.DEFLATED)
.encoding(StandardCharsets.UTF_8)
.zip64(ZipZip64Mode.AS_NEEDED)
.comment("This is a zip comment")
.createUnicodeExtraFields(ZipUnicodeExtraFields.ALWAYS)
.build()) {
zipCreator.addFile(Path.of("path/to/file.txt"));
zipCreator.addDirectoryRecursively(Path.of("sourceDir"));
}
Zip Extraction
try (ZipArchiveExtractor zipExtractor = ZipArchiveExtractor.builder(Path.of("example.zip"))
.overwrite(true)
.stripComponents(1)
.ignoreLocalFileHeader(true)
.useUnicodeExtraFields(true)
.filter(entry -> entry.name().endsWith(".txt"))
.errorHandler((entry, exception) -> SKIP)
.escapingSymlinkPolicy(EscapingSymlinkPolicy.DISALLOW)
.build()) {
zipExtractor.extract(Path.of("outputDir"));
}
Zip extraction from an InputStream
try (var extractor = ZipArchiveExtractor.streaming(download).build()) {
extractor.extract(outputDir);
}
Streaming mode reads only local headers; zip keeps Unix modes in the central directory. In streaming mode entries extract with default permissions and symlinks become regular files holding their target. Read from a file or SeekableByteChannel to keep them. See format capabilities.
|