- Notifications
You must be signed in to change notification settings - Fork3
zip files support for JDK application: split, zip64, encryption, streaming
License
oleg-cherednik/zip4jvm
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
- Add regular files or directories to new or existed zip archive;
- Extract regular files or directories from zip archive;
- Encryption algorithms support:
- Compression support:
- STORE
- DEFLATE (default)
- ENHANCED DEFLATE (read-only)
- BZIP2
- LZMA
- ZSTD
- Individual settings for each zip entry (i.e. some of files can be encrypted, and some - not);
- Streaming support for adding and extracting;
- Read/Write password protected Zip files and streams;
- ZIP64 format support;
- Multi-volume zip archive support:
- Unicode for comments and file names.
compile 'ru.oleg-cherednik.zip4jvm:zip4jvm:1.11'
<dependency> <groupId>ru.oleg-cherednik.zip4jvm</groupId> <artifactId>zip4jvm</artifactId> <version>1.11</version></dependency>
To simplify usage ofzip4jvm, there're following classes:
- ZipIt - add files to archive;
- UnzipIt - extract files from archive;
- ZipMisc - other zip file activities;
- ZipInfo - zip file information and diagnostics.
Pathzip =Paths.get("filename.zip");Pathfile =Path.get("/cars/bentley-continental.jpg")ZipIt.zip(zip).add(file);
/-|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg| |-- honda-cbr600rr.jpg|-- saint-petersburg.jpg
filename.zip|-- bentley-continental.jpg
Note: regular file is added to the root of the zip archive.
Pathzip =Paths.get("filename.zip");Pathdir =Path.get("/cars");ZipIt.zip(zip).add(dir);
/-|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg| |-- honda-cbr600rr.jpg|-- saint-petersburg.jpg
filename.zip|-- cars |-- bentley-continental.jpg |-- ferrari-458-italia.jpg |-- wiesmann-gt-mf5.jpg
Note: directory is added to the root of the zip archive keeping the initial structure.
Pathzip =Paths.get("filename.zip");Collection<Path>paths =Arrays.asList(Paths.get("/bikes/ducati-panigale-1199.jpg"),Paths.get("/bikes/honda-cbr600rr.jpg"),Paths.get("/cars"),Paths.get("/saint-petersburg.jpg"));ZipIt.zip(zip).add(paths);
/-|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg| |-- honda-cbr600rr.jpg|-- saint-petersburg.jpg
filename.zip|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- ducati-panigale-1199.jpg|-- honda-cbr600rr.jpg|-- saint-petersburg.jpg
Note: each regular file from the list is added to the root of the zip archive.
Note: each directory from the list is added to the root of the zip archive keeping the initial structure.
Pathzip =Zip4jvmSuite.subDirNameAsMethodName(rootDir).resolve("filename.zip");try (ZipFile.WriterzipFile =ZipIt.zip(zip).open()) {zipFile.add(ZipFile.Entry.builder() .inputStreamSupplier(() ->newFileInputStream("/cars/bentley-continental.jpg")) .fileName("my_cars/bentley-continental.jpg") .uncompressedSize(Files.size(Paths.get("/cars/bentley-continental.jpg"))).build());zipFile.add(ZipFile.Entry.builder() .inputStreamSupplier(() ->newFileInputStream("/bikes/kawasaki-ninja-300.jpg")) .fileName("my_bikes/kawasaki.jpg") .uncompressedSize(Files.size(Paths.get("/bikes/kawasaki-ninja-300.jpg"))).build());}
/-|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg| |-- honda-cbr600rr.jpg|-- saint-petersburg.jpg
filename.zip|-- my_cars| |-- bentley-continental.jpg|-- my_bikes| |-- kawasaki.jpg
Note: each entry is treated as separate input stream of the regular file.
Pathzip =Paths.get("filename.zip");PathdestDir =Paths.get("/filename_content");UnzipIt.zip(zip).destDir(destDir).extract();
filename.zip|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg|-- saint-petersburg.jpg
/filename_content |-- cars |-- cars | |-- bentley-continental.jpg | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- bikes | |-- ducati-panigale-1199.jpg | |-- kawasaki-ninja-300.jpg |-- saint-petersburg.jpg
Note: all entries (i.e. regular files and empty directories) are added to the destinationdirectory keeping the initial structure.
Pathzip =Paths.get("filename.zip");PathdestDir =Paths.get("/filename_content");UnzipIt.zip(zip).destDir(destDir).extract("/cars/bentley-continental.jpg");
filename.zip|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg|-- saint-petersburg.jpg
/filename_content |-- bentley-continental.jpg
Note: regular file's entry is added to the root of the destination directory.
Pathzip =Paths.get("filename.zip");PathdestDir =Paths.get("/filename_content");UnzipIt.zip(zip).destDir(destDir).extract("cars");
filename.zip|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg|-- saint-petersburg.jpg
/filename_content |-- cars | |-- bentley-continental.jpg | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg
Note: extract all entries belong to the given directory; content of these entries is added tothe destination directory keeping the initial structure.
Pathzip =Paths.get("filename.zip");PathdestDir =Paths.get("/filename_content");Collection<Path>fileNames =Arrays.asList("cars","bikes/ducati-panigale-1199.jpg","saint-petersburg.jpg");UnzipIt.zip(zip).destDir(destDir).extract(fileNames);
filename.zip|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg|-- saint-petersburg.jpg
/filename_content |-- cars | |-- bentley-continental.jpg | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- ducati-panigale-1199.jpg |-- saint-petersburg.jpg
Note: directory is extracting keeping the initial structure; regular file is extracted into root ofdestination directory
Pathzip =Paths.get("filename.zip");PathdestFile =Paths.get("/filename_content/bentley.jpg");try (InputStreamin =UnzipIt.zip(zip).stream("/cars/bentley-continental.jpg");OutputStreamout =newFileOutputStream(destFile.toFile())) {IOUtils.copyLarge(in,out);}
filename.zip|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg|-- saint-petersburg.jpg
/filename_content |-- bentley-continental.jpg
Note: Input stream for regular file's entry should be correctly closed to flush all data
For all unzip operationpassword provider could be optionally set. It could be either single password orpassword provider withfileName of the entry as a key.
char[]password ="1".toCharArray();PathdestDir =Paths.get("/filename_content");List<String>fileNames =Arrays.asList("cars","bikes/ducati-panigale-1199.jpg","saint-petersburg.jpg");UnzipIt.zip(zip).destDir(destDir).password(password).extract(fileNames);
filename.zip --> password: 1|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg|-- saint-petersburg.jpg
/filename_content |-- cars | |-- bentley-continental.jpg | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- ducati-panigale-1199.jpg |-- saint-petersburg.jpg
Or separate password for each entry. The key is thefileName of the entry:
Pathzip =Paths.get("filename.zip");PathdestFile =Paths.get("filename_content/bentley.jpg");Function<String,char[]>passwordProvider =fileName -> {if (fileName.startsWith("cars/"))return"1".toCharArray();if (fileName.startsWith("bikes/ducati-panigale-1199.jpg"))return"2".toCharArray();if (fileName.startsWith("saint-petersburg.jpg"))return"3".toCharArray();returnnull;};UnzipSettingssettings =UnzipSettings.builder().password(passwordProvider).build();List<Path>fileNames =Arrays.asList("cars","bikes/ducati-panigale-1199.jpg","saint-petersburg.jpg");UnzipIt.zip(zip).destDir(destDir).settings(settings).extract(fileNames);
filename.zip |-- cars | |-- bentley-continental.jpg --> password: 1 | |-- ferrari-458-italia.jpg --> password: 1 | |-- wiesmann-gt-mf5.jpg --> password: 1 |-- bikes | |-- ducati-panigale-1199.jpg --> password: 2 | |-- kawasaki-ninja-300.jpg |-- saint-petersburg.jpg --> password: 3
/filename_content |-- cars | |-- bentley-continental.jpg | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- ducati-panigale-1199.jpg |-- saint-petersburg.jpg
Pathzip =Paths.get("filename.zip");ZipMisczipFile =ZipMisc.zip(zip);zipFile.getComment();// get current comment (null if it's not set)zipFile.setComment("comment");// set comment to 'comment'zipFile.setComment(null);// remove comment
Pathzip =Paths.get("filename.zip");ZipMisczipFile =ZipMisc.zip(zip);List<ZipFile.Entry>entires =zipFile.getEntries().collect(Collectors.toList());/* * [entryNames] * cars/bentley-continental.jpg * cars/ferrari-458-italia.jpg * cars/wiesmann-gt-mf5.jpg * bikes/ducati-panigale-1199.jpg * bikes/kawasaki-ninja-300.jpg * saint-petersburg.jpg */
filename.zip|-- cars| |-- bentley-continental.jpg| |-- ferrari-458-italia.jpg| |-- wiesmann-gt-mf5.jpg|-- bikes| |-- ducati-panigale-1199.jpg| |-- kawasaki-ninja-300.jpg|-- saint-petersburg.jpg
Note:zipFile.getEntries()
retrievesStream
with immutableZupFile.Entry
objects represent all entries in zip archive
Pathzip =Paths.get("filename.zip");ZipMisczipFile =ZipMisc.zip(zip);zipFile.removeEntryByName("cars/bentley-continental.jpg");
filename.zip (before) |-- cars | |-- bentley-continental.jpg | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- bikes | |-- ducati-panigale-1199.jpg | |-- kawasaki-ninja-300.jpg |-- saint-petersburg.jpg
filename.zip (after) |-- cars | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- bikes | |-- ducati-panigale-1199.jpg | |-- kawasaki-ninja-300.jpg |-- saint-petersburg.jpg
Note: exactly one entry will be removed in case of entry with exact this name exists
Pathzip =Paths.get("filename.zip");ZipMisczipFile =ZipMisc.zip(zip);Collection<String>entryNames =Arrays.asList("cars/ferrari-458-italia.jpg","bikes/ducati-panigale-1199.jpg");zipFile.removeEntryByName(entryNames);
filename.zip (before) |-- cars | |-- bentley-continental.jpg | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- bikes | |-- ducati-panigale-1199.jpg | |-- kawasaki-ninja-300.jpg |-- saint-petersburg.jpg
filename.zip (after) |-- cars | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- bikes | |-- kawasaki-ninja-300.jpg |-- saint-petersburg.jpg
Pathzip =Paths.get("filename.zip");ZipMisczipFile =ZipMisc.zip(zip);zipFile.removeEntryByNamePrefix("cars")
filename.zip (before) |-- cars | |-- bentley-continental.jpg | |-- ferrari-458-italia.jpg | |-- wiesmann-gt-mf5.jpg |-- bikes | |-- ducati-panigale-1199.jpg | |-- kawasaki-ninja-300.jpg |-- saint-petersburg.jpg
filename.zip (after) |-- bikes | |-- ducati-panigale-1199.jpg | |-- kawasaki-ninja-300.jpg |-- saint-petersburg.jpg
Note: multiple entries could be removed
Pathzip =Paths.get("filename.zip");ZipMisczipFile =ZipMisc.zip(zip);booleansplit =zipFile.isSplit();
PathzipSrc =Paths.get("split.zip");Pathzip =Paths.get("filename.zip");ZipMisczipFile =ZipMisc.zip(zipSrc);zipFile.merge(zip);
/- (before)|-- split.z01|-- split.z02|-- split.z03|-- split.zip
/- (after)|-- filename.zip
Pathzip =Paths.get("filename.zip");ZipInfo.zip(zip).printShortInfo();
filename.zip |-- cars | |-- bentley-continental.jpg |-- saint-petersburg.jpg
--- console output ---(PK0506) End of Central directory record======================================== - location: 2365537 (0x00241861) bytes - size: 22 bytes part number of this part (0000): 1 part number of start of central dir (0000): 1 number of entries in central dir in this part: 3 total number of entries in central dir: 3 size of central dir: 299 (0x0000012B) bytes relative offset of central dir: 2365238 (0x00241736) bytes zipfile comment length: 0 bytes(PK0102) Central directory========================== - location: 2365238 (0x00241736) bytes - size: 303 bytes total entries: 3#1 (PK0102) [UTF-8] cars/------------------------- - location: 2365238 (0x00241736) bytes - size: 87 bytes part number of this part (0000): 1 relative offset of local header: 0 (0x00000000) bytes version made by operating system (00): MS-DOS, OS/2, NT FAT version made by zip software (31): 3.1 operat. system version needed to extract (00): MS-DOS, OS/2, NT FAT unzip software version needed to extract (10): 1.0 general purpose bit flag (0x0000) (bit 15..0): 0000.0000 0000.0000 file security status (bit 0): not encrypted data descriptor (bit 3): no strong encryption (bit 6): no UTF-8 names (bit 11): no compression method (00): none (stored) file last modified on (0x5024 0x7EC0): 2020-01-04 15:54:00 32-bit CRC value: 0x00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 5 UTF-8 63 61 72 73 2F cars/ length of file comment: 0 bytes internal file attributes: 0x0000 apparent file type: binary external file attributes: 0x00000010 WINDOWS (0x10): dir POSIX (0x000000): none extra field: 2365289 (0x00241769) bytes - size: 36 bytes (1 record) (0x000A) NTFS Timestamp: 2365289 (0x00241769) bytes - size: 36 bytes - total tags: 1 (0x0001) Tag1: 24 bytes Creation Date: 2020-01-04 12:50:54 Last Modified Date: 2020-01-04 12:54:00 Last Accessed Date: 2020-01-04 12:54:00#2 (PK0102) [UTF-8] cars/bentley-continental.jpg------------------------------------------------ - location: 2365325 (0x0024178D) bytes - size: 110 bytes part number of this part (0000): 1 relative offset of local header: 35 (0x00000023) bytes version made by operating system (00): MS-DOS, OS/2, NT FAT version made by zip software (31): 3.1 operat. system version needed to extract (00): MS-DOS, OS/2, NT FAT unzip software version needed to extract (20): 2.0 general purpose bit flag (0x0000) (bit 15..0): 0000.0000 0000.0000 file security status (bit 0): not encrypted data descriptor (bit 3): no strong encryption (bit 6): no UTF-8 names (bit 11): no compression method (08): deflate compression sub-type (deflation): normal file last modified on (0x4F24 0x3D6D): 2019-09-04 07:43:26 32-bit CRC value: 0x71797968 compressed size: 1380544 bytes uncompressed size: 1395362 bytes length of filename: 28 UTF-8 63 61 72 73 2F 62 65 6E 74 6C 65 79 2D 63 6F 6E cars/bentley-con 74 69 6E 65 6E 74 61 6C 2E 6A 70 67 tinental.jpg length of file comment: 0 bytes internal file attributes: 0x0000 apparent file type: binary external file attributes: 0x00000020 WINDOWS (0x20): arc POSIX (0x000000): none extra field: 2365399 (0x002417D7) bytes - size: 36 bytes (1 record) (0x000A) NTFS Timestamp: 2365399 (0x002417D7) bytes - size: 36 bytes - total tags: 1 (0x0001) Tag1: 24 bytes Creation Date: 2020-01-04 12:50:54 Last Modified Date: 2019-09-04 04:43:27 Last Accessed Date: 2020-01-04 12:50:54#3 (PK0102) [UTF-8] saint-petersburg.jpg---------------------------------------- - location: 2365435 (0x002417FB) bytes - size: 102 bytes part number of this part (0000): 1 relative offset of local header: 1380637 (0x0015111D) bytes version made by operating system (00): MS-DOS, OS/2, NT FAT version made by zip software (31): 3.1 operat. system version needed to extract (00): MS-DOS, OS/2, NT FAT unzip software version needed to extract (20): 2.0 general purpose bit flag (0x0000) (bit 15..0): 0000.0000 0000.0000 file security status (bit 0): not encrypted data descriptor (bit 3): no strong encryption (bit 6): no UTF-8 names (bit 11): no compression method (08): deflate compression sub-type (deflation): normal file last modified on (0x4F24 0x3D6D): 2019-09-04 07:43:26 32-bit CRC value: 0x5F2EEF84 compressed size: 984551 bytes uncompressed size: 1074836 bytes length of filename: 20 UTF-8 73 61 69 6E 74 2D 70 65 74 65 72 73 62 75 72 67 saint-petersburg 2E 6A 70 67 .jpg length of file comment: 0 bytes internal file attributes: 0x0000 apparent file type: binary external file attributes: 0x00000020 WINDOWS (0x20): arc POSIX (0x000000): none extra field: 2365501 (0x0024183D) bytes - size: 36 bytes (1 record) (0x000A) NTFS Timestamp: 2365501 (0x0024183D) bytes - size: 36 bytes - total tags: 1 (0x0001) Tag1: 24 bytes Creation Date: 2020-01-04 12:50:54 Last Modified Date: 2019-09-04 04:43:27 Last Accessed Date: 2020-01-04 12:50:54(PK0304) ZIP entries==================== total entries: 3#1 (PK0304) [UTF-8] cars/------------------------- - location: 0 (0x00000000) bytes - size: 35 bytes operat. system version needed to extract (00): MS-DOS, OS/2, NT FAT unzip software version needed to extract (10): 1.0 general purpose bit flag (0x0000) (bit 15..0): 0000.0000 0000.0000 file security status (bit 0): not encrypted data descriptor (bit 3): no strong encryption (bit 6): no UTF-8 names (bit 11): no compression method (00): none (stored) file last modified on (0x5024 0x7EC0): 2020-01-04 15:54:00 32-bit CRC value: 0x00000000 compressed size: 0 bytes uncompressed size: 0 bytes length of filename: 5 UTF-8 63 61 72 73 2F cars/#2 (PK0304) [UTF-8] cars/bentley-continental.jpg------------------------------------------------ - location: 35 (0x00000023) bytes - size: 58 bytes operat. system version needed to extract (00): MS-DOS, OS/2, NT FAT unzip software version needed to extract (20): 2.0 general purpose bit flag (0x0000) (bit 15..0): 0000.0000 0000.0000 file security status (bit 0): not encrypted data descriptor (bit 3): no strong encryption (bit 6): no UTF-8 names (bit 11): no compression method (08): deflate compression sub-type (deflation): normal file last modified on (0x4F24 0x3D6D): 2019-09-04 07:43:26 32-bit CRC value: 0x71797968 compressed size: 1380544 bytes uncompressed size: 1395362 bytes length of filename: 28 UTF-8 63 61 72 73 2F 62 65 6E 74 6C 65 79 2D 63 6F 6E cars/bentley-con 74 69 6E 65 6E 74 61 6C 2E 6A 70 67 tinental.jpg#3 (PK0304) [UTF-8] saint-petersburg.jpg---------------------------------------- - location: 1380637 (0x0015111D) bytes - size: 50 bytes operat. system version needed to extract (00): MS-DOS, OS/2, NT FAT unzip software version needed to extract (20): 2.0 general purpose bit flag (0x0000) (bit 15..0): 0000.0000 0000.0000 file security status (bit 0): not encrypted data descriptor (bit 3): no strong encryption (bit 6): no UTF-8 names (bit 11): no compression method (08): deflate compression sub-type (deflation): normal file last modified on (0x4F24 0x3D6D): 2019-09-04 07:43:26 32-bit CRC value: 0x5F2EEF84 compressed size: 984551 bytes uncompressed size: 1074836 bytes length of filename: 20 UTF-8 73 61 69 6E 74 2D 70 65 74 65 72 73 62 75 72 67 saint-petersburg 2E 6A 70 67 .jpg
Note: additional methodZipInfo.printShortInfo(PrintStream)
could be used to print this info to requiredPrintStream
Pathzip =Paths.get("filename.zip");PathdestDir =Paths.get("/filename_decompose");ZipInfo.zip(zip).decompose(destDir);
filename.zip |-- cars | |-- bentley-continental.jpg |-- saint-petersburg.jpg
/filename_content |-- central_directory | |-- #1 - cars | | |-- extra_fields | | | |-- (0x000A)_NTFS_Timestamp.txt | | | |-- (0x000A)_NTFS_Timestamp.data | | |-- file_header.txt | | |-- file_header.data | |-- #2 - cars_-_bentley-continental.jpg | | |-- extra_fields | | | |-- (0x000A)_NTFS_Timestamp.txt | | | |-- (0x000A)_NTFS_Timestamp.data | | |-- file_header.txt | | |-- file_header.data | |-- #3 - saint-petersburg.jpg | | |-- extra_fields | | | |-- (0x000A)_NTFS_Timestamp.txt | | | |-- (0x000A)_NTFS_Timestamp.data | | |-- file_header.txt | | |-- file_header.data | |-- central_directory.txt |-- entries | |-- #1 - cars | | |-- local_file_header.txt | | |-- local_file_header.data | |-- #2 - cars_-_bentley-continental.jpg | | |-- local_file_header.txt | | |-- local_file_header.data | |-- #3 - saint-petersburg.jpg | | |-- file_header.txt | | |-- file_header.data |-- end_central_directory.txt |-- end_central_directory.data
All zip operations includeZipSettings
.Default settings isused when it's not explicitly set. Settings contains zip archive scope properties as well asprovider for entry specific settings. The key for entry settings isfileName.
Note: user should not worry about directory marker/
, becausezip4jvm
does not supportduplicated file names and it's impossible to have same file name for file and directory.
- splitSize - size of each part in split archive
-1
- no split or solid archive- min size -
64Kb
i.e.65_536
- min size -
~2Gb
i.e.2_147_483_647
- comment - global archive comment
- no comment -
null
orempty string
- max length -
65_535
symbols
- no comment -
- zip64 - use
true
or notfalse
zip64 format for global zip structure- Note:zip64 is switched on automatically if needed
- Note: it does not mean that entry structure is inzip64 format as well
- entrySettingsProvider - file name base provider of settings for entry
- Note: each entry could have different settings
- splitSize -
-1
, i.e. off or solid archive - comment -
null
, i.e. no comment - zip64 -
false
, i.e. standard format for global zip structure - entrySettingsProvider -
default
, i.e. all entries has samedefault entry settings
Each entry has it's own settings. These settings could be different for every entry. If this settingsare not explicitly set, thendefault
entry settings are used for all added entries.
- compression - compression algorithm
store
- no compressiondeflate
- useDEFLATE compression algorithmenhanced_deflate
- useENHANCED DEFLATE compression algorithmbzip2
- useBZIP2 compression algorithmlzma
- useLZMA compression algorithm
- compressionLevel - compression level
super_fast
fast
normal
maximum
- encryption - encryption algorithm
- comment - comment for entry
- no comment -
null
orempty string
- max length -
65_535
symbols
- no comment -
- zip64 - use
true
orfalse
zip64 format for global zip structure- Note:zip64 is switched on automatically if needed
- utf8 -
true
useUTF-8 charset for file name and commentinstead ofIBM-437 whenfalse
- compression -
deflate
- compressionLevel -
normal
- encryption -
off
, i.e. no encryption - comment -
null
, i.e. no comment - zip64 -
false
, i.e. standard format for entry structure - utf8 -
true
, i.e. entry's name and comment are stored usingUTF-8
charset
About
zip files support for JDK application: split, zip64, encryption, streaming