Package org.apache.commons.compress.archivers.zip

# Class ZipArchiveEntry

java.lang.Object
java.util.zip.ZipEntry
org.apache.commons.compress.archivers.zip.ZipArchiveEntry

All Implemented Interfaces:
  `Cloneable`, `ArchiveEntry`, `EntryStreamOffsets`

Direct Known Subclasses:
  `JarArchiveEntry`

public class ZipArchiveEntry extends ZipEntry implements ArchiveEntry, EntryStreamOffsets
Extension that adds better handling of extra fields and provides access to the internal and external file attributes.

The extra data is expected to follow the recommendation of APPNOTE.TXT:

- the extra byte array consists of a sequence of extra fields
- each extra fields starts by a two byte header id followed by a two byte sequence holding the length of the remainder of data.

Any extra data that cannot be parsed by the rules above will be consumed as "unparseable" extra data and treated differently by the methods of this class. Versions prior to Apache Commons Compress 1.1 would have thrown an exception if any attempt was made to read or write extra data not conforming to the recommendation.

This class is not thread-safe

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `ZipArchiveEntry.CommentSource`
  Enumerates how the comment of this entry has been determined.
  `static enum`
  `ZipArchiveEntry.ExtraFieldParsingMode`
  Enumerates how to try to parse the extra fields.
  `static enum`
  `ZipArchiveEntry.NameSource`
  Indicates how the name of this entry has been determined.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `CENATT`
  `static final int`
  `CENATX`
  `static final int`
  `CENCOM`
  `static final int`
  `CENCRC`
  `static final int`
  `CENDSK`
  `static final int`
  `CENEXT`
  `static final int`
  `CENFLG`
  `static final int`
  `CENHDR`
  `static final int`
  `CENHOW`
  `static final int`
  `CENLEN`
  `static final int`
  `CENNAM`
  `static final int`
  `CENOFF`
  `static final long`
  `CENSIG`
  `static final int`
  `CENSIZ`
  `static final int`
  `CENTIM`
  `static final int`
  `CENVEM`
  `static final int`
  `CENVER`
  `static final int`
  `CRC_UNKNOWN`
  Platform is unknown.
  `static final int`
  `ENDCOM`
  `static final int`
  `ENDHDR`
  `static final int`
  `ENDOFF`
  `static final long`
  `ENDSIG`
  `static final int`
  `ENDSIZ`
  `static final int`
  `ENDSUB`
  `static final int`
  `ENDTOT`
  `static final int`
  `EXTCRC`
  `static final int`
  `EXTHDR`
  `static final int`
  `EXTLEN`
  `static final long`
  `EXTSIG`
  `static final int`
  `EXTSIZ`
  `static final int`
  `LOCCRC`
  `static final int`
  `LOCEXT`
  `static final int`
  `LOCFLG`
  `static final int`
  `LOCHDR`
  `static final int`
  `LOCHOW`
  `static final int`
  `LOCLEN`
  `static final int`
  `LOCNAM`
  `static final long`
  `LOCSIG`
  `static final int`
  `LOCSIZ`
  `static final int`
  `LOCTIM`
  `static final int`
  `LOCVER`
  `static final int`
  `PLATFORM_FAT`
  Platform is FAT.
  `static final int`
  `PLATFORM_UNIX`
  Platform is UNIX.

  ### Fields inherited from class java.util.zip.ZipEntry

  `DEFLATED, STORED`

  ### Fields inherited from interface org.apache.commons.compress.archivers.ArchiveEntry

  `SIZE_UNKNOWN`

  ### Fields inherited from interface org.apache.commons.compress.archivers.EntryStreamOffsets

  `OFFSET_UNKNOWN`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `ZipArchiveEntry()`
  ``
  `ZipArchiveEntry(File inputFile, String entryName)`
  Creates a new ZIP entry taking some information from the given file and using the provided name.
  ``
  `ZipArchiveEntry(String name)`
  Creates a new ZIP entry with the specified name.
  ``
  `ZipArchiveEntry(Path inputPath, String entryName, LinkOption... options)`
  Creates a new ZIP entry taking some information from the given path and using the provided name.
  ``
  `ZipArchiveEntry(ZipEntry entry)`
  Creates a new ZIP entry with fields taken from the specified ZIP entry.
  ``
  `ZipArchiveEntry(ZipArchiveEntry entry)`
  Creates a new ZIP entry with fields taken from the specified ZIP entry.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addAsFirstExtraField(ZipExtraField ze)`
  Adds an extra field - replacing an already present extra field of the same type.
  `void`
  `addExtraField(ZipExtraField ze)`
  Adds an extra field - replacing an already present extra field of the same type.
  `Object`
  `clone()`
  Overwrite clone.
  `boolean`
  `equals(Object obj)`
  `protected int`
  `getAlignment()`
  Gets currently configured alignment.
  `byte[]`
  `getCentralDirectoryExtra()`
  Gets the extra data for the central directory.
  `ZipArchiveEntry.CommentSource`
  `getCommentSource()`
  * Gets the source of the comment field value.
  `long`
  `getDataOffset()`
  Gets the offset of data stream within the archive file,
  `long`
  `getDiskNumberStart()`
  Gets the number of the split segment this entry starts at.
  `long`
  `getExternalAttributes()`
  Gets the external file attributes.
  `ZipExtraField`
  `getExtraField(ZipShort type)`
  Gets an extra field by its header id.
  `ZipExtraField[]`
  `getExtraFields()`
  Gets all extra fields that have been parsed successfully.
  `ZipExtraField[]`
  `getExtraFields(boolean includeUnparseable)`
  Gets extra fields.
  `ZipExtraField[]`
  `getExtraFields(ExtraFieldParsingBehavior parsingBehavior)`
  Gets extra fields.
  `GeneralPurposeBit`
  `getGeneralPurposeBit()`
  The "general purpose bit" field.
  `int`
  `getInternalAttributes()`
  Gets the internal file attributes.
  `Date`
  `getLastModifiedDate()`
  Wraps `ZipEntry.getTime()` with a `Date` as the entry's last modified date.
  `byte[]`
  `getLocalFileDataExtra()`
  Gets the extra data for the local file data.
  `long`
  `getLocalHeaderOffset()`
  Gets the local header offset.
  `int`
  `getMethod()`
  Gets the compression method of this entry, or -1 if the compression method has not been specified.
  `String`
  `getName()`
  Gets the name of the entry.
  `ZipArchiveEntry.NameSource`
  `getNameSource()`
  The source of the name field value.
  `int`
  `getPlatform()`
  Platform specification to put into the "version made by" part of the central file header.
  `int`
  `getRawFlag()`
  The content of the flags field.
  `byte[]`
  `getRawName()`
  Returns the raw bytes that made up the name before it has been converted using the configured or guessed encoding.
  `long`
  `getSize()`
  Gets the uncompressed size of the entry data.
  `long`
  `getTime()`
  `int`
  `getUnixMode()`
  Gets the Unix permission.
  `UnparseableExtraFieldData`
  `getUnparseableExtraFieldData()`
  Gets up extra field data that couldn't be parsed correctly.
  `int`
  `getVersionMadeBy()`
  Gets the "version made by" field.
  `int`
  `getVersionRequired()`
  Gets the "version required to expand" field.
  `int`
  `hashCode()`
  Gets the hash code of the entry.
  `boolean`
  `isDirectory()`
  Tests whether this entry is a directory.
  `boolean`
  `isStreamContiguous()`
  Tests whether the stream is contiguous, that is, not split among several archive parts, interspersed with control blocks, and so on.
  `boolean`
  `isUnixSymlink()`
  Tests whether this entry represents a Unix symlink, in which case the entry's content contains the target path for the symlink.
  `void`
  `removeExtraField(ZipShort type)`
  Remove an extra field.
  `void`
  `removeUnparseableExtraFieldData()`
  Removes unparseable extra field data.
  `void`
  `setAlignment(int alignment)`
  Sets alignment for this entry.
  `void`
  `setCentralDirectoryExtra(byte[] b)`
  Sets the central directory part of extra fields.
  `void`
  `setCommentSource(ZipArchiveEntry.CommentSource commentSource)`
  Sets the source of the comment field value.
  `ZipEntry`
  `setCreationTime(FileTime time)`
  `protected void`
  `setDataOffset(long dataOffset)`
  Sets the data offset.
  `void`
  `setDiskNumberStart(long diskNumberStart)`
  The number of the split segment this entry starts at.
  `void`
  `setExternalAttributes(long value)`
  Sets the external file attributes.
  `protected void`
  `setExtra()`
  Unfortunately `ZipOutputStream` seems to access the extra data directly, so overriding getExtra doesn't help - we need to modify super's data directly and on every update.
  `void`
  `setExtra(byte[] extra)`
  Parses the given bytes as extra field data and consumes any unparseable data as an `UnparseableExtraFieldData` instance.
  `void`
  `setExtraFields(ZipExtraField[] fields)`
  Replaces all currently attached extra fields with the new array.
  `void`
  `setGeneralPurposeBit(GeneralPurposeBit generalPurposeBit)`
  Sets the "general purpose bit" field.
  `void`
  `setInternalAttributes(int internalAttributes)`
  Sets the internal file attributes.
  `ZipEntry`
  `setLastAccessTime(FileTime fileTime)`
  `ZipEntry`
  `setLastModifiedTime(FileTime fileTime)`
  `protected void`
  `setLocalHeaderOffset(long localHeaderOffset)`
  Sets the local header offset.
  `void`
  `setMethod(int method)`
  Sets the compression method of this entry.
  `protected void`
  `setName(String name)`
  Sets the name of the entry.
  `protected void`
  `setName(String name, byte[] rawName)`
  Sets the name using the raw bytes and the string created from it by guessing or using the configured encoding.
  `void`
  `setNameSource(ZipArchiveEntry.NameSource nameSource)`
  Sets the source of the name field value.
  `protected void`
  `setPlatform(int platform)`
  Sets the platform (Unix or FAT).
  `void`
  `setRawFlag(int rawFlag)`
  Sets the content of the flags field.
  `void`
  `setSize(long size)`
  Sets the uncompressed size of the entry data.
  `protected void`
  `setStreamContiguous(boolean isStreamContiguous)`
  Sets whether the stream is contiguous, that is, not split among several archive parts, interspersed with control blocks, and so on.
  `void`
  `setTime(long timeEpochMillis)`
  `void`
  `setTime(FileTime fileTime)`
  Sets the modification time of the entry.
  `void`
  `setUnixMode(int mode)`
  Sets Unix permissions in a way that is understood by Info-Zip's unzip command.
  `void`
  `setVersionMadeBy(int versionMadeBy)`
  Sets the "version made by" field.
  `void`
  `setVersionRequired(int versionRequired)`
  Sets the "version required to expand" field.

  ### Methods inherited from class java.util.zip.ZipEntry

  `getComment, getCompressedSize, getCrc, getCreationTime, getExtra, getLastAccessTime, getLastModifiedTime, setComment, setCompressedSize, setCrc, toString`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface org.apache.commons.compress.archivers.ArchiveEntry

  `resolveIn`

- ## Field Details

  - ### PLATFORM_UNIX

    public static final int PLATFORM_UNIX
    Platform is UNIX.
    See Also:
      - Constant Field Values

  - ### PLATFORM_FAT

    public static final int PLATFORM_FAT
    Platform is FAT.
    See Also:
      - Constant Field Values

  - ### CRC_UNKNOWN

    public static final int CRC_UNKNOWN
    Platform is unknown.
    See Also:
      - Constant Field Values

  - ### LOCSIG

    static final long LOCSIG
    See Also:
      - Constant Field Values

  - ### EXTSIG

    static final long EXTSIG
    See Also:
      - Constant Field Values

  - ### CENSIG

    static final long CENSIG
    See Also:
      - Constant Field Values

  - ### ENDSIG

    static final long ENDSIG
    See Also:
      - Constant Field Values

  - ### LOCHDR

    static final int LOCHDR
    See Also:
      - Constant Field Values

  - ### EXTHDR

    static final int EXTHDR
    See Also:
      - Constant Field Values

  - ### CENHDR

    static final int CENHDR
    See Also:
      - Constant Field Values

  - ### ENDHDR

    static final int ENDHDR
    See Also:
      - Constant Field Values

  - ### LOCVER

    static final int LOCVER
    See Also:
      - Constant Field Values

  - ### LOCFLG

    static final int LOCFLG
    See Also:
      - Constant Field Values

  - ### LOCHOW

    static final int LOCHOW
    See Also:
      - Constant Field Values

  - ### LOCTIM

    static final int LOCTIM
    See Also:
      - Constant Field Values

  - ### LOCCRC

    static final int LOCCRC
    See Also:
      - Constant Field Values

  - ### LOCSIZ

    static final int LOCSIZ
    See Also:
      - Constant Field Values

  - ### LOCLEN

    static final int LOCLEN
    See Also:
      - Constant Field Values

  - ### LOCNAM

    static final int LOCNAM
    See Also:
      - Constant Field Values

  - ### LOCEXT

    static final int LOCEXT
    See Also:
      - Constant Field Values

  - ### EXTCRC

    static final int EXTCRC
    See Also:
      - Constant Field Values

  - ### EXTSIZ

    static final int EXTSIZ
    See Also:
      - Constant Field Values

  - ### EXTLEN

    static final int EXTLEN
    See Also:
      - Constant Field Values

  - ### CENVEM

    static final int CENVEM
    See Also:
      - Constant Field Values

  - ### CENVER

    static final int CENVER
    See Also:
      - Constant Field Values

  - ### CENFLG

    static final int CENFLG
    See Also:
      - Constant Field Values

  - ### CENHOW

    static final int CENHOW
    See Also:
      - Constant Field Values

  - ### CENTIM

    static final int CENTIM
    See Also:
      - Constant Field Values

  - ### CENCRC

    static final int CENCRC
    See Also:
      - Constant Field Values

  - ### CENSIZ

    static final int CENSIZ
    See Also:
      - Constant Field Values

  - ### CENLEN

    static final int CENLEN
    See Also:
      - Constant Field Values

  - ### CENNAM

    static final int CENNAM
    See Also:
      - Constant Field Values

  - ### CENEXT

    static final int CENEXT
    See Also:
      - Constant Field Values

  - ### CENCOM

    static final int CENCOM
    See Also:
      - Constant Field Values

  - ### CENDSK

    static final int CENDSK
    See Also:
      - Constant Field Values

  - ### CENATT

    static final int CENATT
    See Also:
      - Constant Field Values

  - ### CENATX

    static final int CENATX
    See Also:
      - Constant Field Values

  - ### CENOFF

    static final int CENOFF
    See Also:
      - Constant Field Values

  - ### ENDSUB

    static final int ENDSUB
    See Also:
      - Constant Field Values

  - ### ENDTOT

    static final int ENDTOT
    See Also:
      - Constant Field Values

  - ### ENDSIZ

    static final int ENDSIZ
    See Also:
      - Constant Field Values

  - ### ENDOFF

    static final int ENDOFF
    See Also:
      - Constant Field Values

  - ### ENDCOM

    static final int ENDCOM
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### ZipArchiveEntry

    protected ZipArchiveEntry()

  - ### ZipArchiveEntry

    public ZipArchiveEntry(File inputFile, String entryName)
    Creates a new ZIP entry taking some information from the given file and using the provided name.

    The name will be adjusted to end with a forward slash "/" if the file is a directory. If the file is not a directory a potential trailing forward slash will be stripped from the entry name.

    Parameters:
      `inputFile` - file to create the entry from
      `entryName` - name of the entry

  - ### ZipArchiveEntry

    public ZipArchiveEntry(Path inputPath, String entryName, LinkOption... options) throws IOException
    Creates a new ZIP entry taking some information from the given path and using the provided name.

    The name will be adjusted to end with a forward slash "/" if the file is a directory. If the file is not a directory a potential trailing forward slash will be stripped from the entry name.

    Parameters:
      `inputPath` - path to create the entry from.
      `entryName` - name of the entry.
      `options` - options indicating how symbolic links are handled.
    Throws:
      `IOException` - if an I/O error occurs.
    Since:
      1.21

  - ### ZipArchiveEntry

    public ZipArchiveEntry(String name)
    Creates a new ZIP entry with the specified name.

    Assumes the entry represents a directory if and only if the name ends with a forward slash "/".

    Parameters:
      `name` - the name of the entry
    Since:
      1.26.0

  - ### ZipArchiveEntry

    public ZipArchiveEntry(ZipArchiveEntry entry) throws ZipException
    Creates a new ZIP entry with fields taken from the specified ZIP entry.

    Assumes the entry represents a directory if and only if the name ends with a forward slash "/".

    Parameters:
      `entry` - the entry to get fields from
    Throws:
      `ZipException` - on error

  - ### ZipArchiveEntry

    public ZipArchiveEntry(ZipEntry entry) throws ZipException
    Creates a new ZIP entry with fields taken from the specified ZIP entry.

    Assumes the entry represents a directory if and only if the name ends with a forward slash "/".

    Parameters:
      `entry` - the entry to get fields from
    Throws:
      `ZipException` - on error

- ## Method Details

  - ### addAsFirstExtraField

    public void addAsFirstExtraField(ZipExtraField ze)
    Adds an extra field - replacing an already present extra field of the same type.

    The new extra field will be the first one.

    Parameters:
      `ze` - an extra field

  - ### addExtraField

    public void addExtraField(ZipExtraField ze)
    Adds an extra field - replacing an already present extra field of the same type.

    If no extra field of the same type exists, the field will be added as last field.

    Parameters:
      `ze` - an extra field

  - ### clone

    public Object clone()
    Overwrite clone.
    Overrides:
      `clone` in class `ZipEntry`
    Returns:
      a cloned copy of this ZipArchiveEntry

  - ### equals

    public boolean equals(Object obj)
    Overrides:
      `equals` in class `Object`

  - ### getAlignment

    protected int getAlignment()
    Gets currently configured alignment.
    Returns:
      alignment for this entry.
    Since:
      1.14

  - ### getCentralDirectoryExtra

    public byte[] getCentralDirectoryExtra()
    Gets the extra data for the central directory.
    Returns:
      the central directory extra data

  - ### getCommentSource

    public ZipArchiveEntry.CommentSource getCommentSource()
    * Gets the source of the comment field value.
    Returns:
      source of the comment field value
    Since:
      1.16

  - ### getDataOffset

    public long getDataOffset()
    Description copied from interface: `EntryStreamOffsets`
    Gets the offset of data stream within the archive file,
    Specified by:
      `getDataOffset` in interface `EntryStreamOffsets`
    Returns:
      the offset of entry data stream, `OFFSET_UNKNOWN` if not known.

  - ### getDiskNumberStart

    public long getDiskNumberStart()
    Gets the number of the split segment this entry starts at.
    Returns:
      the number of the split segment this entry starts at.
    Since:
      1.20

  - ### getExternalAttributes

    public long getExternalAttributes()
    Gets the external file attributes.

    Note: `ZipArchiveInputStream` is unable to fill this field, you must use `ZipFile` if you want to read entries using this attribute.

    Returns:
      the external file attributes

  - ### getExtraField

    public ZipExtraField getExtraField(ZipShort type)
    Gets an extra field by its header id.
    Parameters:
      `type` - the header id
    Returns:
      null if no such field exists.

  - ### getExtraFields

    public ZipExtraField[] getExtraFields()
    Gets all extra fields that have been parsed successfully.

    Note: The set of extra fields may be incomplete when `ZipArchiveInputStream` has been used as some extra fields use the central directory to store additional information.

    Returns:
      an array of the extra fields

  - ### getExtraFields

    public ZipExtraField[] getExtraFields(boolean includeUnparseable)
    Gets extra fields.
    Parameters:
      `includeUnparseable` - whether to also return unparseable extra fields as `UnparseableExtraFieldData` if such data exists.
    Returns:
      an array of the extra fields
    Since:
      1.1

  - ### getExtraFields

    public ZipExtraField[] getExtraFields(ExtraFieldParsingBehavior parsingBehavior) throws ZipException
    Gets extra fields.
    Parameters:
      `parsingBehavior` - controls parsing of extra fields.
    Returns:
      an array of the extra fields
    Throws:
      `ZipException` - if parsing fails, cannot happen if `parsingBehavior` is `ZipArchiveEntry.ExtraFieldParsingMode.BEST_EFFORT`.
    Since:
      1.19

  - ### getGeneralPurposeBit

    public GeneralPurposeBit getGeneralPurposeBit()
    The "general purpose bit" field.
    Returns:
      the general purpose bit
    Since:
      1.1

  - ### getInternalAttributes

    public int getInternalAttributes()
    Gets the internal file attributes.

    Note: `ZipArchiveInputStream` is unable to fill this field, you must use `ZipFile` if you want to read entries using this attribute.

    Returns:
      the internal file attributes

  - ### getLastModifiedDate

    public Date getLastModifiedDate()
    Wraps `ZipEntry.getTime()` with a `Date` as the entry's last modified date.

    Changes to the implementation of `ZipEntry.getTime()` leak through and the returned value may depend on your local time zone as well as your version of Java.

    Specified by:
      `getLastModifiedDate` in interface `ArchiveEntry`
    Returns:
      the last modified date of this entry.

  - ### getLocalFileDataExtra

    public byte[] getLocalFileDataExtra()
    Gets the extra data for the local file data.
    Returns:
      the extra data for local file

  - ### getLocalHeaderOffset

    public long getLocalHeaderOffset()
    Gets the local header offset.
    Returns:
      the local header offset.
    Since:
      1.24.0

  - ### getMethod

    public int getMethod()
    Gets the compression method of this entry, or -1 if the compression method has not been specified.
    Overrides:
      `getMethod` in class `ZipEntry`
    Returns:
      compression method
    Since:
      1.1

  - ### getName

    public String getName()
    Gets the name of the entry.

    This method returns the raw name as it is stored inside of the archive.

    Specified by:
      `getName` in interface `ArchiveEntry`
    Overrides:
      `getName` in class `ZipEntry`
    Returns:
      the entry name

  - ### getNameSource

    public ZipArchiveEntry.NameSource getNameSource()
    The source of the name field value.
    Returns:
      source of the name field value
    Since:
      1.16

  - ### getPlatform

    public int getPlatform()
    Platform specification to put into the "version made by" part of the central file header.
    Returns:
      PLATFORM_FAT unless `setUnixMode` has been called, in which case PLATFORM_UNIX will be returned.

  - ### getRawFlag

    public int getRawFlag()
    The content of the flags field.
    Returns:
      content of the flags field
    Since:
      1.11

  - ### getRawName

    public byte[] getRawName()
    Returns the raw bytes that made up the name before it has been converted using the configured or guessed encoding.

    This method will return null if this instance has not been read from an archive.

    Returns:
      the raw name bytes
    Since:
      1.2

  - ### getSize

    public long getSize()
    Gets the uncompressed size of the entry data.

    Note: `ZipArchiveInputStream` may create entries that return `SIZE_UNKNOWN` as long as the entry hasn't been read completely.

    Specified by:
      `getSize` in interface `ArchiveEntry`
    Overrides:
      `getSize` in class `ZipEntry`
    Returns:
      the entry size

  - ### getTime

    public long getTime()

    Override to work around bug JDK-8130914

    Overrides:
      `getTime` in class `ZipEntry`
    Returns:
      The last modification time of the entry in milliseconds since the epoch, or -1 if not specified
    See Also:
      - `setTime(long)`
      - `setLastModifiedTime(FileTime)`

  - ### getUnixMode

    public int getUnixMode()
    Gets the Unix permission.
    Returns:
      the Unix permissions.

  - ### getUnparseableExtraFieldData

    public UnparseableExtraFieldData getUnparseableExtraFieldData()
    Gets up extra field data that couldn't be parsed correctly.
    Returns:
      null if no such field exists.
    Since:
      1.1

  - ### getVersionMadeBy

    public int getVersionMadeBy()
    Gets the "version made by" field.
    Returns:
      "version made by" field
    Since:
      1.11

  - ### getVersionRequired

    public int getVersionRequired()
    Gets the "version required to expand" field.
    Returns:
      "version required to expand" field
    Since:
      1.11

  - ### hashCode

    public int hashCode()
    Gets the hash code of the entry. This uses the name as the hash code.
    Overrides:
      `hashCode` in class `ZipEntry`
    Returns:
      a hash code.

  - ### isDirectory

    public boolean isDirectory()
    Tests whether this entry is a directory.
    Specified by:
      `isDirectory` in interface `ArchiveEntry`
    Overrides:
      `isDirectory` in class `ZipEntry`
    Returns:
      true if the entry is a directory.

  - ### isStreamContiguous

    public boolean isStreamContiguous()
    Description copied from interface: `EntryStreamOffsets`
    Tests whether the stream is contiguous, that is, not split among several archive parts, interspersed with control blocks, and so on.
    Specified by:
      `isStreamContiguous` in interface `EntryStreamOffsets`
    Returns:
      true if stream is contiguous, false otherwise.

  - ### isUnixSymlink

    public boolean isUnixSymlink()
    Tests whether this entry represents a Unix symlink, in which case the entry's content contains the target path for the symlink.
    Returns:
      true if the entry represents a Unix symlink, false otherwise.
    Since:
      1.5

  - ### removeExtraField

    public void removeExtraField(ZipShort type)
    Remove an extra field.
    Parameters:
      `type` - the type of extra field to remove

  - ### removeUnparseableExtraFieldData

    public void removeUnparseableExtraFieldData()
    Removes unparseable extra field data.
    Since:
      1.1

  - ### setAlignment

    public void setAlignment(int alignment)
    Sets alignment for this entry.
    Parameters:
      `alignment` - requested alignment, 0 for default.
    Since:
      1.14

  - ### setCentralDirectoryExtra

    public void setCentralDirectoryExtra(byte[] b)
    Sets the central directory part of extra fields.
    Parameters:
      `b` - an array of bytes to be parsed into extra fields

  - ### setCommentSource

    public void setCommentSource(ZipArchiveEntry.CommentSource commentSource)
    Sets the source of the comment field value.
    Parameters:
      `commentSource` - source of the comment field value
    Since:
      1.16

  - ### setCreationTime

    public ZipEntry setCreationTime(FileTime time)
    Overrides:
      `setCreationTime` in class `ZipEntry`

  - ### setDataOffset

    protected void setDataOffset(long dataOffset)
    Sets the data offset.
    Parameters:
      `dataOffset` - new value of data offset.

  - ### setDiskNumberStart

    public void setDiskNumberStart(long diskNumberStart)
    The number of the split segment this entry starts at.
    Parameters:
      `diskNumberStart` - the number of the split segment this entry starts at.
    Since:
      1.20

  - ### setExternalAttributes

    public void setExternalAttributes(long value)
    Sets the external file attributes.
    Parameters:
      `value` - an `long` value

  - ### setExtra

    protected void setExtra()
    Unfortunately `ZipOutputStream` seems to access the extra data directly, so overriding getExtra doesn't help - we need to modify super's data directly and on every update.

  - ### setExtra

    public void setExtra(byte[] extra) throws RuntimeException
    Parses the given bytes as extra field data and consumes any unparseable data as an `UnparseableExtraFieldData` instance.
    Overrides:
      `setExtra` in class `ZipEntry`
    Parameters:
      `extra` - an array of bytes to be parsed into extra fields
    Throws:
      `RuntimeException` - if the bytes cannot be parsed
      `RuntimeException` - on error

  - ### setExtraFields

    public void setExtraFields(ZipExtraField[] fields)
    Replaces all currently attached extra fields with the new array.
    Parameters:
      `fields` - an array of extra fields

  - ### setGeneralPurposeBit

    public void setGeneralPurposeBit(GeneralPurposeBit generalPurposeBit)
    Sets the "general purpose bit" field.
    Parameters:
      `generalPurposeBit` - the general purpose bit
    Since:
      1.1

  - ### setInternalAttributes

    public void setInternalAttributes(int internalAttributes)
    Sets the internal file attributes.
    Parameters:
      `internalAttributes` - an `int` value

  - ### setLastAccessTime

    public ZipEntry setLastAccessTime(FileTime fileTime)
    Overrides:
      `setLastAccessTime` in class `ZipEntry`

  - ### setLastModifiedTime

    public ZipEntry setLastModifiedTime(FileTime fileTime)
    Overrides:
      `setLastModifiedTime` in class `ZipEntry`

  - ### setLocalHeaderOffset

    protected void setLocalHeaderOffset(long localHeaderOffset)
    Sets the local header offset.
    Parameters:
      `localHeaderOffset` - the local header offset.

  - ### setMethod

    public void setMethod(int method)
    Sets the compression method of this entry.
    Overrides:
      `setMethod` in class `ZipEntry`
    Parameters:
      `method` - compression method
    Since:
      1.1

  - ### setName

    protected void setName(String name)
    Sets the name of the entry.
    Parameters:
      `name` - the name to use

  - ### setName

    protected void setName(String name, byte[] rawName)
    Sets the name using the raw bytes and the string created from it by guessing or using the configured encoding.
    Parameters:
      `name` - the name to use created from the raw bytes using the guessed or configured encoding
      `rawName` - the bytes originally read as name from the archive
    Since:
      1.2

  - ### setNameSource

    public void setNameSource(ZipArchiveEntry.NameSource nameSource)
    Sets the source of the name field value.
    Parameters:
      `nameSource` - source of the name field value
    Since:
      1.16

  - ### setPlatform

    protected void setPlatform(int platform)
    Sets the platform (Unix or FAT).
    Parameters:
      `platform` - an `int` value - 0 is FAT, 3 is Unix

  - ### setRawFlag

    public void setRawFlag(int rawFlag)
    Sets the content of the flags field.
    Parameters:
      `rawFlag` - content of the flags field
    Since:
      1.11

  - ### setSize

    public void setSize(long size)
    Sets the uncompressed size of the entry data.
    Overrides:
      `setSize` in class `ZipEntry`
    Parameters:
      `size` - the uncompressed size in bytes
    Throws:
      `IllegalArgumentException` - if the specified size is less than 0

  - ### setStreamContiguous

    protected void setStreamContiguous(boolean isStreamContiguous)
    Sets whether the stream is contiguous, that is, not split among several archive parts, interspersed with control blocks, and so on.
    Parameters:
      `isStreamContiguous` - whether the stream is contiguous

  - ### setTime

    public void setTime(FileTime fileTime)
    Sets the modification time of the entry.
    Parameters:
      `fileTime` - the entry modification time.
    Since:
      1.21

  - ### setTime

    public void setTime(long timeEpochMillis)

    Override to work around bug JDK-8130914

    Overrides:
      `setTime` in class `ZipEntry`
    Parameters:
      `timeEpochMillis` - The last modification time of the entry in milliseconds since the epoch.
    See Also:
      - `getTime()`
      - `ZipEntry.getLastModifiedTime()`

  - ### setUnixMode

    public void setUnixMode(int mode)
    Sets Unix permissions in a way that is understood by Info-Zip's unzip command.
    Parameters:
      `mode` - an `int` value

  - ### setVersionMadeBy

    public void setVersionMadeBy(int versionMadeBy)
    Sets the "version made by" field.
    Parameters:
      `versionMadeBy` - "version made by" field
    Since:
      1.11

  - ### setVersionRequired

    public void setVersionRequired(int versionRequired)
    Sets the "version required to expand" field.
    Parameters:
      `versionRequired` - "version required to expand" field
    Since:
      1.11