Class ZipEntry
- All Implemented Interfaces:
AutoCloseable
Inspect, extract, update, and iterate individual entries inside a ZIP archive.
Chilkat.ZipEntry represents a single item associated with a
Chilkat.Zip archive. An entry may be a file already stored in an
opened ZIP, a referenced filesystem file waiting to be compressed, an
in-memory text or binary entry, or a directory entry. It provides access to
entry-level metadata, compressed and uncompressed data, timestamps,
attributes, CRC values, encryption information, and extraction or replacement
operations for that specific ZIP item.
Entry metadata
Inspect filenames, stored ZIP paths, comments, timestamps, CRC values, attributes, sizes, compression method, and compression level.
Entry type and state
Use EntryType to understand whether the entry comes from an
existing ZIP, a filesystem reference, memory data, or a directory.
Extract one entry
Extract a selected file entry to disk, inflate its contents into memory, or read the uncompressed data into Chilkat objects.
Read compressed data
Access the raw compressed entry data when an application needs ZIP-level control rather than only the inflated contents.
Replace or append data
Update an entry's contents from strings, byte data, files, or in-memory data sources before writing the ZIP archive.
Iterate archive entries
Walk through entries returned from Chilkat.Zip methods to
inspect, filter, extract, or modify ZIP contents one item at a time.
Common pattern:
Open or create a Chilkat.Zip object, obtain a
ZipEntry using methods such as EntryAt,
EntryOf, EntryMatching, or
FirstEntry, then inspect metadata, extract contents, update the
entry, or continue iterating through the archive. Use
Chilkat.Zip for whole-archive operations and
ZipEntry for operations on one specific archive item.
For an extended overview, see ZipEntry Overview.
</section>
Event-capable: long-running methods report progress through a ProgressListener installed
with setProgressListener(ProgressListener), onAbortCheck(BooleanSupplier),
onPercentDone(IntPredicate) or onProgressInfo(BiConsumer).
Instances hold a native Chilkat object: close them with ChilkatObject.close() (try-with-resources) when
done; an unclosed instance is freed when it becomes unreachable.
- See Also:
- Online reference
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidappendString(String strContent, String charset)Appends text data to this ZIP entry's file contents.Returns the compressed data for this ZIP entry as a Base64-encoded string.Returns the compressed data for this ZIP entry as a hexadecimal encoded string.voidExtracts this ZIP entry beneath the specified base directory.voidextractInto(String dirPath)Extracts this entry directly into the specified directory, ignoring any path information stored in the ZIP entry.Gets or sets the comment stored in the ZIP archive for this entry.longThe compressed size of this entry, in bytes.longThe compressed size of this entry, in bytes, as a 64-bit integer.The compressed size of this entry as a decimal string.intGets or sets the compression level for this entry.intGets or sets the compression method used for this entry.intgetCrc()The CRC value for this ZIP entry.intThe AES encryption key length for this entry.intA unique identifier assigned to this entry while the ZIP object is instantiated in memory.intIndicates the origin and current state of this ZIP entry.Gets or sets the local last-modified date/time for this ZIP entry in RFC 822 string format.Gets or sets the filename, including any relative path, stored for this entry inside the ZIP archive.Returns the raw filename bytes found in the ZIP entry, encoded as a hexadecimal string.intThe interval in milliseconds between eachevent callback, which enables an application to abort certain method calls before they complete.AbortCheckbooleanIndicates whether this ZIP entry is AES encrypted.booleanIndicates whether this ZIP entry is a directory entry.booleangetNext()Updates thisZipEntryobject so that it represents the next entry in the same ZIP archive.booleangetNextMatch(String pattern)Updates thisZipEntryobject so that it represents the next entry in the ZIP archive matching the specified wildcard pattern.Returns the installed listener, ornull.booleanGets or sets the text flag in the internal file attributes for this ZIP entry.longThe uncompressed size of this entry, in bytes.longThe uncompressed size of this entry, in bytes, as a 64-bit integer.The uncompressed size of this ZIP entry as a decimal string.voidonAbortCheck(BooleanSupplier callback)Installs a listener whose only callback isabortCheck: called everyHeartbeatMsmilliseconds during a long-running method; returntrueto abort it.voidonPercentDone(IntPredicate callback)Installs a listener whose only callback ispercentDone: called with the completion percentage (0..100) as a long-running method progresses; returntrueto abort it.voidonProgressInfo(BiConsumer<String,String> callback)Installs a listener whose only callback isprogressInfo: called with a name/value pair of progress information as a long-running method proceeds.voidreplaceString(String strContent, String charset)Replaces this ZIP entry's existing contents with new text data.voidsetComment(String value)Sets theCommentproperty; seegetComment().voidsetCompressionLevel(int value)Sets theCompressionLevelproperty; seegetCompressionLevel().voidsetCompressionMethod(int value)Sets theCompressionMethodproperty; seegetCompressionMethod().voidSets the last-modified date/time for this ZIP entry.voidsetFileDateTimeStr(String value)Sets theFileDateTimeStrproperty; seegetFileDateTimeStr().voidsetFileName(String value)Sets theFileNameproperty; seegetFileName().voidsetHeartbeatMs(int value)Sets theHeartbeatMsproperty; seegetHeartbeatMs().voidsetProgressListener(ProgressListener listener)Installs the listener that receives this object's progress events (abortCheck,percentDone,progressInfo) during its long-running methods; replaces any listener or lambda installed before;nullremoves it.voidsetTextFlag(boolean value)Sets theTextFlagproperty; seegetTextFlag().voidUnzips this entry directly into aBinDataobject.voidunzipToSb(int lineEndingBehavior, String srcCharset, StringBuilder sb)Unzips this entry as text and appends the result to aStringBuilder.voidunzipToStream(Stream toStream)Unzips this entry to a stream.unzipToString(int lineEndingBehavior, String srcCharset)Inflates this entry and returns the uncompressed data as a string.Methods inherited from class com.chilkatsoft.chilkat2.ChilkatObject
close, getDebugLogFilePath, getLastErrorHtml, getLastErrorText, getLastErrorXml, getLastMethodSuccess, getVerboseLogging, getVersion, isClosed, setDebugLogFilePath, setLastMethodSuccess, setVerboseLogging, toString
-
Constructor Details
-
ZipEntry
public ZipEntry()Creates a newZipEntryobject.
-
-
Method Details
-
getComment
Gets or sets the comment stored in the ZIP archive for this entry.- Returns:
- the value of the
Commentproperty
-
setComment
Sets theCommentproperty; seegetComment().- Parameters:
value- the new value (notnull)
-
getCompressedLength
public long getCompressedLength()The compressed size of this entry, in bytes.For mapped entries (entries already contained within an opened ZIP archive), this property contains the actual compressed size stored within the ZIP.
For file entries or data entries that have not yet been written to a ZIP archive, compression has not yet occurred. In these cases, this property contains:
- The current uncompressed data size for data entries.
-
The cached filesystem file size for referenced file entries.
After the ZIP archive is written, the entries become mapped entries, and this property then reflects the actual compressed size stored in the ZIP archive.
- Returns:
- the value of the
CompressedLengthproperty (read-only)
-
getCompressedLength64
public long getCompressedLength64()The compressed size of this entry, in bytes, as a 64-bit integer.For mapped entries (entries already contained within an opened ZIP archive), this property contains the actual compressed size stored within the ZIP.
For file entries or data entries that have not yet been written to a ZIP archive, compression has not yet occurred. In these cases, this property contains:
- The current uncompressed data size for data entries.
-
The cached filesystem file size for referenced file entries.
After the ZIP archive is written, the entries become mapped entries, and this property then reflects the actual compressed size stored in the ZIP archive.
Use this property when sizes may exceed the range of a 32-bit integer.
- Returns:
- the value of the
CompressedLength64property (read-only)
-
getCompressedLengthStr
The compressed size of this entry as a decimal string.For mapped entries (entries already contained within an opened ZIP archive), this property contains the actual compressed size stored within the ZIP.
For file entries or data entries that have not yet been written to a ZIP archive, compression has not yet occurred. In these cases, this property contains:
- The current uncompressed data size for data entries.
-
The cached filesystem file size for referenced file entries.
After the ZIP archive is written, the entries become mapped entries, and this property then reflects the actual compressed size stored in the ZIP archive.
This property is useful when sizes may exceed the range of a 32-bit integer.
- Returns:
- the value of the
CompressedLengthStrproperty (read-only)
-
getCompressionLevel
public int getCompressionLevel()Gets or sets the compression level for this entry.A value of
0means no compression, and a value of9means maximum compression.The default value is
6.- Returns:
- the value of the
CompressionLevelproperty
-
setCompressionLevel
public void setCompressionLevel(int value)Sets theCompressionLevelproperty; seegetCompressionLevel().- Parameters:
value- the new value
-
getCompressionMethod
public int getCompressionMethod()Gets or sets the compression method used for this entry.-
0means no compression. -
8means Deflate compression.
Deflate is the standard compression algorithm used by common ZIP utilities such as WinZip.
- Returns:
- the value of the
CompressionMethodproperty
-
-
setCompressionMethod
public void setCompressionMethod(int value)Sets theCompressionMethodproperty; seegetCompressionMethod().- Parameters:
value- the new value
-
getCrc
public int getCrc()The CRC value for this ZIP entry.For AES-encrypted entries, the CRC value is
0.- Returns:
- the value of the
Crcproperty (read-only)
-
getEncryptionKeyLen
public int getEncryptionKeyLen()The AES encryption key length for this entry.If this entry is AES encrypted, the value is
128,192, or256.If this entry is not AES encrypted, the value is
0.- Returns:
- the value of the
EncryptionKeyLenproperty (read-only)
-
getEntryID
public int getEntryID()A unique identifier assigned to this entry while the ZIP object is instantiated in memory.This ID can be used to retrieve the same entry later with
Zip.EntryById.- Returns:
- the value of the
EntryIDproperty (read-only)
-
getEntryType
public int getEntryType()Indicates the origin and current state of this ZIP entry.-
0— Mapped Entry: an entry that already exists in an open ZIP file. -
1— File Entry: a file in the local filesystem that has been referenced, but not yet read or compressed. -
2— Data Entry: an entry containing uncompressed data already held in memory. -
3— Null Entry: an entry that no longer exists in the ZIP archive. -
4— New Directory Entry: a directory entry added to the ZIP object.
When the ZIP archive is written by calling
WriteZiporWriteToMemory, entries are transformed into mapped entries. In other words, after writing, they point to compressed data contained in the newly created or rewritten ZIP archive.- Returns:
- the value of the
EntryTypeproperty (read-only)
-
-
getFileDateTimeStr
Gets or sets the local last-modified date/time for this ZIP entry in RFC 822 string format.Example RFC 822 date/time strings:
Tue, 15 Nov 1994 12:45:26 GMT
Fri, 05 Jan 2024 18:30:00 -0500The timezone may be specified either as a named timezone such as
GMT, or as a numeric UTC offset such as-0500.- Returns:
- the value of the
FileDateTimeStrproperty
-
setFileDateTimeStr
Sets theFileDateTimeStrproperty; seegetFileDateTimeStr().- Parameters:
value- the new value (notnull)
-
getFileName
Gets or sets the filename, including any relative path, stored for this entry inside the ZIP archive.Changing this property changes the path/name that will appear in the ZIP archive. It does not rename a source file in the local filesystem.
- Returns:
- the value of the
FileNameproperty
-
setFileName
Sets theFileNameproperty; seegetFileName().- Parameters:
value- the new value (notnull)
-
getFileNameHex
Returns the raw filename bytes found in the ZIP entry, encoded as a hexadecimal string.This can be useful for diagnosing filename encoding issues.
- Returns:
- the value of the
FileNameHexproperty (read-only)
-
getHeartbeatMs
public int getHeartbeatMs()The interval in milliseconds between eachevent callback, which enables an application to abort certain method calls before they complete. By default, HeartbeatMs is set toAbortCheck0, meaning no AbortCheck event callbacks will trigger.- Returns:
- the value of the
HeartbeatMsproperty
-
setHeartbeatMs
public void setHeartbeatMs(int value)Sets theHeartbeatMsproperty; seegetHeartbeatMs().- Parameters:
value- the new value
-
getIsAesEncrypted
public boolean getIsAesEncrypted()Indicates whether this ZIP entry is AES encrypted.This property can be
only for entries already contained in a ZIP archive, such as entries obtained after callingtrueOpenZip,OpenBd, orOpenFromMemory.If the entry is not AES encrypted, the property is
.false- Returns:
- the value of the
IsAesEncryptedproperty (read-only)
-
getIsDirectory
public boolean getIsDirectory()Indicates whether this ZIP entry is a directory entry.The value is
if the entry represents a directory, andtrueif it represents a file.false- Returns:
- the value of the
IsDirectoryproperty (read-only)
-
getTextFlag
public boolean getTextFlag()Gets or sets the text flag in the internal file attributes for this ZIP entry.This flag indicates whether the entry contents should be considered text rather than binary data.
The flag is informational and does not need to be accurate for normal ZIP processing. It is provided for compatibility with applications that may be sensitive to this attribute.
- Returns:
- the value of the
TextFlagproperty
-
setTextFlag
public void setTextFlag(boolean value)Sets theTextFlagproperty; seegetTextFlag().- Parameters:
value- the new value
-
getUncompressedLength
public long getUncompressedLength()The uncompressed size of this entry, in bytes.- Returns:
- the value of the
UncompressedLengthproperty (read-only)
-
getUncompressedLength64
public long getUncompressedLength64()The uncompressed size of this entry, in bytes, as a 64-bit integer.Use this property when the uncompressed size may exceed the range of a 32-bit integer.
- Returns:
- the value of the
UncompressedLength64property (read-only)
-
getUncompressedLengthStr
The uncompressed size of this ZIP entry as a decimal string.This is useful when the uncompressed size may be larger than what can safely be represented by a 32-bit integer.
- Returns:
- the value of the
UncompressedLengthStrproperty (read-only)
-
appendString
Appends text data to this ZIP entry's file contents.The text is converted to bytes using the character encoding specified by
charset, such asutf-8,utf-16, oransi.If this entry is already a Data Entry (
EntryType = 2), then the encoded bytes are appended directly to the existing uncompressed in-memory data.If this entry is not already a Data Entry, then the entry is first converted into a Data Entry before the new text data is appended.
-
If the entry is a mapped entry
(
EntryType = 0), the compressed ZIP entry data is first inflated into memory. The new text data is then appended, and the entry becomes a Data Entry containing the combined uncompressed data. -
If the entry is a file entry
(
EntryType = 1), the referenced filesystem file is first loaded into memory. The new text data is then appended, and the entry becomes a Data Entry containing the combined data.
After this method is called, the entry contents exist entirely as uncompressed in-memory data associated with the ZipEntry object.
- Parameters:
strContent- thestrContentargument (notnull)charset- thecharsetargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
If the entry is a mapped entry
(
-
copyToBase64
Returns the compressed data for this ZIP entry as a Base64-encoded string.This method can only be used when the entry already contains compressed data, meaning the entry is a mapped entry.
This is possible for entries from a ZIP archive that has already been opened, or after writing a ZIP archive while it remains open.
- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
copyToHex
Returns the compressed data for this ZIP entry as a hexadecimal encoded string.This method can only be used when the entry already contains compressed data, meaning the entry is a mapped entry.
This is possible for entries from a ZIP archive that has already been opened, or after writing a ZIP archive while it remains open.
- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
extract
Extracts this ZIP entry beneath the specified base directory.The entry is extracted according to the relative path stored in the ZIP archive.
For example, if the entry filename is
docs/readme.txtanddirPathisc:/temp/output, the file is extracted toc:/temp/output/docs/readme.txt.Use
ExtractIntoinstead if the file should be extracted directly into a specific directory regardless of the path stored in the ZIP archive.- Parameters:
dirPath- thedirPathargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
extractInto
Extracts this entry directly into the specified directory, ignoring any path information stored in the ZIP entry.For example, if the entry filename is
docs/readme.txtanddirPathisc:/temp/output, the file is extracted toc:/temp/output/readme.txt.If this entry is a directory entry, nothing is extracted. To create the directory represented by a directory entry, use
Extractinstead.- Parameters:
dirPath- thedirPathargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
getNext
public boolean getNext()Updates thisZipEntryobject so that it represents the next entry in the same ZIP archive.The next entry may be either a file entry or a directory entry.
Returns
if the object was advanced to the next entry. Returnstrueif there are no more entries.false- Returns:
- the result; this method never throws
ChilkatException
-
getNextMatch
Updates thisZipEntryobject so that it represents the next entry in the ZIP archive matching the specified wildcard pattern.The wildcard character
*matches zero or more characters. Matching is performed against the full stored filename, including any relative path.The matching entry may be either a file entry or a directory entry.
Returns
if a matching entry is found. Returnstrueif no further matching entry exists.false- Parameters:
pattern- thepatternargument (notnull)- Returns:
- the result; this method never throws
ChilkatException
-
replaceString
Replaces this ZIP entry's existing contents with new text data.The text is converted to bytes using the character encoding specified by
charset, such asutf-8oransi.The resulting bytes become the complete contents of the entry.
- Parameters:
strContent- thestrContentargument (notnull)charset- thecharsetargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
setDt
Sets the last-modified date/time for this ZIP entry.The
dtargument is aCkDateTimeobject containing the date/time to store for the entry.- Parameters:
dt- thedtargument (notnull)
-
unzipToBd
Unzips this entry directly into aBinDataobject.The uncompressed bytes are written to
binData.- Parameters:
binData- thebinDataargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
unzipToSb
Unzips this entry as text and appends the result to aStringBuilder.The
srcCharsetargument specifies how the uncompressed bytes should be interpreted, such asutf-8,utf-16, orwindows-1252.The
lineEndingBehaviorargument controls line-ending conversion:-
0— leave line endings unchanged. -
1— convert all line endings to bare LF. -
2— convert all line endings to CRLF.
- Parameters:
lineEndingBehavior- thelineEndingBehaviorargumentsrcCharset- thesrcCharsetargument (notnull)sb- thesbargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
-
unzipToStream
Unzips this entry to a stream.If called synchronously, the
toStreammust have a sink, such as a file or another stream object.If called asynchronously, the foreground thread can read from the stream while the unzip operation writes to it.
- Parameters:
toStream- thetoStreamargument (notnull)- Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
unzipToString
Inflates this entry and returns the uncompressed data as a string.The
srcCharsetargument specifies how the uncompressed bytes should be interpreted, such asutf-8,utf-16, orwindows-1252.The
lineEndingBehaviorargument controls line-ending conversion:-
0— leave line endings unchanged. -
1— convert all line endings to bare LF. -
2— convert all line endings to CRLF.
- Parameters:
lineEndingBehavior- thelineEndingBehaviorargumentsrcCharset- thesrcCharsetargument (notnull)- Returns:
- the result (never
null) - Throws:
ChilkatException- if the operation fails;ChilkatException.getLastErrorText()says why
-
-
setProgressListener
Installs the listener that receives this object's progress events (abortCheck,percentDone,progressInfo) during its long-running methods; replaces any listener or lambda installed before;nullremoves it.- Parameters:
listener- the listener, ornull- Throws:
IllegalStateException- if called from inside one of this object's own callbacks
-
getProgressListener
Returns the installed listener, ornull.- Returns:
- the listener installed with
setProgressListener(ProgressListener)or one of theon...methods
-
onAbortCheck
Installs a listener whose only callback isabortCheck: called everyHeartbeatMsmilliseconds during a long-running method; returntrueto abort it. Replaces any listener installed before.- Parameters:
callback- the callback, ornullto remove the listener
-
onPercentDone
Installs a listener whose only callback ispercentDone: called with the completion percentage (0..100) as a long-running method progresses; returntrueto abort it. Replaces any listener installed before.- Parameters:
callback- the callback, ornullto remove the listener
-
onProgressInfo
Installs a listener whose only callback isprogressInfo: called with a name/value pair of progress information as a long-running method proceeds. Replaces any listener installed before.- Parameters:
callback- the callback, ornullto remove the listener
-