## org.apache.tools.zip
Class ZipEntry

    java.lang.Object
      java.util.zip.ZipEntry
          org.apache.tools.zip.ZipEntry

All Implemented Interfaces:
  java.lang.Cloneable

    public class ZipEntry

extends java.util.zip.ZipEntry
implements java.lang.Cloneable

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 the .ZIP File Format Specification created by PKWARE Inc. :

- 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.

See Also:
  .ZIP File Format Specification

Field Summary
`static int` `CENATT`
`static int` `CENATX`
`static int` `CENCOM`
`static int` `CENCRC`
`static int` `CENDSK`
`static int` `CENEXT`
`static int` `CENFLG`
`static int` `CENHDR`
`static int` `CENHOW`
`static int` `CENLEN`
`static int` `CENNAM`
`static int` `CENOFF`
`static long` `CENSIG`
`static int` `CENSIZ`
`static int` `CENTIM`
`static int` `CENVEM`
`static int` `CENVER`
`static int` `ENDCOM`
`static int` `ENDHDR`
`static int` `ENDOFF`
`static long` `ENDSIG`
`static int` `ENDSIZ`
`static int` `ENDSUB`
`static int` `ENDTOT`
`static int` `EXTCRC`
`static int` `EXTHDR`
`static int` `EXTLEN`
`static long` `EXTSIG`
`static int` `EXTSIZ`
`static int` `LOCCRC`
`static int` `LOCEXT`
`static int` `LOCFLG`
`static int` `LOCHDR`
`static int` `LOCHOW`
`static int` `LOCLEN`
`static int` `LOCNAM`
`static long` `LOCSIG`
`static int` `LOCSIZ`
`static int` `LOCTIM`
`static int` `LOCVER`
`static int` `PLATFORM_FAT`
`static int` `PLATFORM_UNIX`

Fields inherited from class java.util.zip.ZipEntry
`DEFLATED, STORED`

Constructor Summary
`protected` `ZipEntry()`
`` `ZipEntry(java.lang.String name)` Creates a new zip entry with the specified name.
`` `ZipEntry(java.util.zip.ZipEntry entry)` Creates a new zip entry with fields taken from the specified zip entry.
`` `ZipEntry(ZipEntry entry)` Creates a new zip entry with fields taken from the specified zip entry.

Method Summary
`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.
`java.lang.Object` `clone()` Overwrite clone.
`boolean` `equals(java.lang.Object o)` The equality method.
`byte[]` `getCentralDirectoryExtra()` Retrieves the extra data for the central directory.
`long` `getExternalAttributes()` Retrieves the external file attributes.
`ZipExtraField` `getExtraField(ZipShort type)` Looks up an extra field by its header id.
`ZipExtraField[]` `getExtraFields()` Retrieves all extra fields that have been parsed successfully.
`ZipExtraField[]` `getExtraFields(boolean includeUnparseable)` Retrieves extra fields.
`int` `getInternalAttributes()` Retrieves the internal file attributes.
`byte[]` `getLocalFileDataExtra()` Retrieves the extra data for the local file data.
`java.lang.String` `getName()` Get the name of the entry.
`int` `getPlatform()` Platform specification to put into the "version made by" part of the central file header.
`int` `getUnixMode()` Unix permission.
`UnparseableExtraFieldData` `getUnparseableExtraFieldData()` Looks up extra field data that couldn't be parsed correctly.
`int` `hashCode()` Get the hashCode of the entry.
`boolean` `isDirectory()` Is this entry a directory?
`void` `removeExtraField(ZipShort type)` Remove an extra field.
`void` `removeUnparseableExtraFieldData()` Removes unparseable extra field data.
`void` `setCentralDirectoryExtra(byte[] b)` Sets the central directory part of extra fields.
`void` `setComprSize(long size)` Deprecated. since 1.7. Use setCompressedSize directly.
`void` `setExternalAttributes(long value)` Sets the external file attributes.
`protected void` `setExtra()` Unfortunately `java.util.zip.ZipOutputStream` seems to access the extra data directly, so overriding getExtra doesn't help - we need to modify super's data directly.
`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` `setInternalAttributes(int value)` Sets the internal file attributes.
`protected void` `setName(java.lang.String name)` Set the name of the entry.
`protected void` `setPlatform(int platform)` Set the platform (UNIX or FAT).
`void` `setUnixMode(int mode)` Sets Unix permissions in a way that is understood by Info-Zip's unzip command.

Methods inherited from class java.util.zip.ZipEntry
`getComment, getCompressedSize, getCrc, getExtra, getMethod, getSize, getTime, setComment, setCompressedSize, setCrc, setMethod, setSize, setTime, toString`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### PLATFORM_UNIX

    public static final int PLATFORM_UNIX

See Also:
  Constant Field Values

### PLATFORM_FAT

    public static final int PLATFORM_FAT

See Also:
  Constant Field Values

### LOCSIG

    public static final long LOCSIG

See Also:
  Constant Field Values

### EXTSIG

    public static final long EXTSIG

See Also:
  Constant Field Values

### CENSIG

    public static final long CENSIG

See Also:
  Constant Field Values

### ENDSIG

    public static final long ENDSIG

See Also:
  Constant Field Values

### LOCHDR

    public static final int LOCHDR

See Also:
  Constant Field Values

### EXTHDR

    public static final int EXTHDR

See Also:
  Constant Field Values

### CENHDR

    public static final int CENHDR

See Also:
  Constant Field Values

### ENDHDR

    public static final int ENDHDR

See Also:
  Constant Field Values

### LOCVER

    public static final int LOCVER

See Also:
  Constant Field Values

### LOCFLG

    public static final int LOCFLG

See Also:
  Constant Field Values

### LOCHOW

    public static final int LOCHOW

See Also:
  Constant Field Values

### LOCTIM

    public static final int LOCTIM

See Also:
  Constant Field Values

### LOCCRC

    public static final int LOCCRC

See Also:
  Constant Field Values

### LOCSIZ

    public static final int LOCSIZ

See Also:
  Constant Field Values

### LOCLEN

    public static final int LOCLEN

See Also:
  Constant Field Values

### LOCNAM

    public static final int LOCNAM

See Also:
  Constant Field Values

### LOCEXT

    public static final int LOCEXT

See Also:
  Constant Field Values

### EXTCRC

    public static final int EXTCRC

See Also:
  Constant Field Values

### EXTSIZ

    public static final int EXTSIZ

See Also:
  Constant Field Values

### EXTLEN

    public static final int EXTLEN

See Also:
  Constant Field Values

### CENVEM

    public static final int CENVEM

See Also:
  Constant Field Values

### CENVER

    public static final int CENVER

See Also:
  Constant Field Values

### CENFLG

    public static final int CENFLG

See Also:
  Constant Field Values

### CENHOW

    public static final int CENHOW

See Also:
  Constant Field Values

### CENTIM

    public static final int CENTIM

See Also:
  Constant Field Values

### CENCRC

    public static final int CENCRC

See Also:
  Constant Field Values

### CENSIZ

    public static final int CENSIZ

See Also:
  Constant Field Values

### CENLEN

    public static final int CENLEN

See Also:
  Constant Field Values

### CENNAM

    public static final int CENNAM

See Also:
  Constant Field Values

### CENEXT

    public static final int CENEXT

See Also:
  Constant Field Values

### CENCOM

    public static final int CENCOM

See Also:
  Constant Field Values

### CENDSK

    public static final int CENDSK

See Also:
  Constant Field Values

### CENATT

    public static final int CENATT

See Also:
  Constant Field Values

### CENATX

    public static final int CENATX

See Also:
  Constant Field Values

### CENOFF

    public static final int CENOFF

See Also:
  Constant Field Values

### ENDSUB

    public static final int ENDSUB

See Also:
  Constant Field Values

### ENDTOT

    public static final int ENDTOT

See Also:
  Constant Field Values

### ENDSIZ

    public static final int ENDSIZ

See Also:
  Constant Field Values

### ENDOFF

    public static final int ENDOFF

See Also:
  Constant Field Values

### ENDCOM

    public static final int ENDCOM

See Also:
  Constant Field Values

Constructor Detail

### ZipEntry

    public ZipEntry(java.lang.String name)

  Creates a new zip entry with the specified name.

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

### ZipEntry

    public ZipEntry(java.util.zip.ZipEntry entry)
             throws java.util.zip.ZipException

  Creates a new zip entry with fields taken from the specified zip entry.

  Parameters:
    `entry` - the entry to get fields from
  Throws:
    `java.util.zip.ZipException` - on error
  Since:
    1.1

### ZipEntry

    public ZipEntry(ZipEntry entry)
             throws java.util.zip.ZipException

  Creates a new zip entry with fields taken from the specified zip entry.

  Parameters:
    `entry` - the entry to get fields from
  Throws:
    `java.util.zip.ZipException` - on error
  Since:
    1.1

### ZipEntry

    protected ZipEntry()

Since:
  1.9

Method Detail

### clone

    public java.lang.Object clone()

  Overwrite clone.

  Overrides:
    `clone` in class `java.util.zip.ZipEntry`
  Returns:
    a cloned copy of this ZipEntry
  Since:
    1.1

### getInternalAttributes

    public int getInternalAttributes()

  Retrieves the internal file attributes.

  Returns:
    the internal file attributes
  Since:
    1.1

### setInternalAttributes

    public void setInternalAttributes(int value)

  Sets the internal file attributes.

  Parameters:
    `value` - an `int` value
  Since:
    1.1

### getExternalAttributes

    public long getExternalAttributes()

  Retrieves the external file attributes.

  Returns:
    the external file attributes
  Since:
    1.1

### setExternalAttributes

    public void setExternalAttributes(long value)

  Sets the external file attributes.

  Parameters:
    `value` - an `long` value
  Since:
    1.1

### 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
  Since:
    Ant 1.5.2

### getUnixMode

    public int getUnixMode()

  Unix permission.

  Returns:
    the unix permissions
  Since:
    Ant 1.6

### 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 PLATORM_UNIX will be returned.
  Since:
    Ant 1.5.2

### setPlatform

    protected void setPlatform(int platform)

  Set the platform (UNIX or FAT).

  Parameters:
    `platform` - an `int` value - 0 is FAT, 3 is UNIX
  Since:
    1.9

### setExtraFields

    public void setExtraFields(ZipExtraField[] fields)

  Replaces all currently attached extra fields with the new array.

  Parameters:
    `fields` - an array of extra fields
  Since:
    1.1

### getExtraFields

    public ZipExtraField[] getExtraFields()

  Retrieves all extra fields that have been parsed successfully.

  Returns:
    an array of the extra fields

### getExtraFields

    public ZipExtraField[] getExtraFields(boolean includeUnparseable)

  Retrieves 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

### 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
  Since:
    1.1

### 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
  Since:
    1.1

### removeExtraField

    public void removeExtraField(ZipShort type)

  Remove an extra field.

  Parameters:
    `type` - the type of extra field to remove
  Since:
    1.1

### removeUnparseableExtraFieldData

    public void removeUnparseableExtraFieldData()

  Removes unparseable extra field data.

### getExtraField

    public ZipExtraField getExtraField(ZipShort type)

  Looks up an extra field by its header id.

  Returns:
    null if no such field exists.

### getUnparseableExtraFieldData

    public UnparseableExtraFieldData getUnparseableExtraFieldData()

  Looks up extra field data that couldn't be parsed correctly.

  Returns:
    null if no such field exists.

### setExtra

    public void setExtra(byte[] extra)
                  throws java.lang.RuntimeException

  Parses the given bytes as extra field data and consumes any unparseable data as an `UnparseableExtraFieldData` instance.

  Overrides:
    `setExtra` in class `java.util.zip.ZipEntry`
  Parameters:
    `extra` - an array of bytes to be parsed into extra fields
  Throws:
    `java.lang.RuntimeException` - if the bytes cannot be parsed
    `java.lang.RuntimeException` - on error
  Since:
    1.1

### setExtra

    protected void setExtra()

  Unfortunately `java.util.zip.ZipOutputStream` seems to access the extra data directly, so overriding getExtra doesn't help - we need to modify super's data directly.

  Since:
    1.1

### setCentralDirectoryExtra

    public void setCentralDirectoryExtra(byte[] b)

  Sets the central directory part of extra fields.

### getLocalFileDataExtra

    public byte[] getLocalFileDataExtra()

  Retrieves the extra data for the local file data.

  Returns:
    the extra data for local file
  Since:
    1.1

### getCentralDirectoryExtra

    public byte[] getCentralDirectoryExtra()

  Retrieves the extra data for the central directory.

  Returns:
    the central directory extra data
  Since:
    1.1

### setComprSize

    public void setComprSize(long size)

  Deprecated. since 1.7. Use setCompressedSize directly.

  Make this class work in JDK 1.1 like a 1.2 class.

  This either stores the size for later usage or invokes setCompressedSize via reflection.

  Parameters:
    `size` - the size to use
  Since:
    1.2

### getName

    public java.lang.String getName()

  Get the name of the entry.

  Overrides:
    `getName` in class `java.util.zip.ZipEntry`
  Returns:
    the entry name
  Since:
    1.9

### isDirectory

    public boolean isDirectory()

  Is this entry a directory?

  Overrides:
    `isDirectory` in class `java.util.zip.ZipEntry`
  Returns:
    true if the entry is a directory
  Since:
    1.10

### setName

    protected void setName(java.lang.String name)

  Set the name of the entry.

  Parameters:
    `name` - the name to use

### hashCode

    public int hashCode()

  Get the hashCode of the entry. This uses the name as the hashcode.

  Overrides:
    `hashCode` in class `java.util.zip.ZipEntry`
  Returns:
    a hashcode.
  Since:
    Ant 1.7

### equals

    public boolean equals(java.lang.Object o)

  The equality method. In this case, the implementation returns 'this == o' which is basically the equals method of the Object class.

  Overrides:
    `equals` in class `java.lang.Object`
  Parameters:
    `o` - the object to compare to
  Returns:
    true if this object is the same as `o`
  Since:
    Ant 1.7