org.apache.tools.zip

## Class AbstractUnicodeExtraField

- java.lang.Object
- - org.apache.tools.zip.AbstractUnicodeExtraField

- All Implemented Interfaces:
    ZipExtraField
  Direct Known Subclasses:
    UnicodeCommentExtraField, UnicodePathExtraField

      public abstract class AbstractUnicodeExtraField
      extends java.lang.Object
      implements ZipExtraField

  A common base class for Unicode extra information extra fields.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractUnicodeExtraField()`
    `protected` | `AbstractUnicodeExtraField(java.lang.String text, byte[] bytes)` Assemble as unicode extension from the name/comment and encoding of the original zip entry.
    `protected` | `AbstractUnicodeExtraField(java.lang.String text, byte[] bytes, int off, int len)` Assemble as unicode extension from the name/comment and encoding of the original zip entry.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `getCentralDirectoryData()` The actual data to put into central directory - without Header-ID or length specifier.
    `ZipShort` | `getCentralDirectoryLength()` Length of the extra field in the central directory - without Header-ID or length specifier.
    `byte[]` | `getLocalFileDataData()` The actual data to put into local file data - without Header-ID or length specifier.
    `ZipShort` | `getLocalFileDataLength()` Length of the extra field in the local file data - without Header-ID or length specifier.
    `long` | `getNameCRC32()`
    `byte[]` | `getUnicodeName()`
    `void` | `parseFromLocalFileData(byte[] buffer, int offset, int length)` Populate data from this array as if it was in local file data.
    `void` | `setNameCRC32(long nameCRC32)`
    `void` | `setUnicodeName(byte[] unicodeName)`

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.tools.zip.ZipExtraField

      `getHeaderId`

- - ### Constructor Detail

    - #### AbstractUnicodeExtraField

          protected AbstractUnicodeExtraField()

    - #### AbstractUnicodeExtraField

          protected AbstractUnicodeExtraField(java.lang.String text,
                                   byte[] bytes,
                                   int off,
                                   int len)

      Assemble as unicode extension from the name/comment and encoding of the original zip entry.
      Parameters:
        `text` - The file name or comment.
        `bytes` - The encoded of the filename or comment in the zip file.
        `off` - The offset of the encoded filename or comment in `bytes`.
        `len` - The length of the encoded filename or commentin `bytes`.

    - #### AbstractUnicodeExtraField

          protected AbstractUnicodeExtraField(java.lang.String text,
                                   byte[] bytes)

      Assemble as unicode extension from the name/comment and encoding of the original zip entry.
      Parameters:
        `text` - The file name or comment.
        `bytes` - The encoded of the filename or comment in the zip file.

  - ### Method Detail

    - #### getNameCRC32

          public long getNameCRC32()

      Returns:
        The CRC32 checksum of the filename or comment as encoded in the central directory of the zip file.

    - #### setNameCRC32

          public void setNameCRC32(long nameCRC32)

      Parameters:
        `nameCRC32` - The CRC32 checksum of the filename as encoded in the central directory of the zip file to set.

    - #### getUnicodeName

          public byte[] getUnicodeName()

      Returns:
        The utf-8 encoded name.

    - #### setUnicodeName

          public void setUnicodeName(byte[] unicodeName)

      Parameters:
        `unicodeName` - The utf-8 encoded name to set.

    - #### getCentralDirectoryData

          public byte[] getCentralDirectoryData()

      The actual data to put into central directory - without Header-ID or length specifier.
      Specified by:
        `getCentralDirectoryData` in interface `ZipExtraField`
      Returns:
        the data

    - #### getCentralDirectoryLength

          public ZipShort getCentralDirectoryLength()

      Length of the extra field in the central directory - without Header-ID or length specifier.
      Specified by:
        `getCentralDirectoryLength` in interface `ZipExtraField`
      Returns:
        the length of the field in the central directory

    - #### getLocalFileDataData

          public byte[] getLocalFileDataData()

      The actual data to put into local file data - without Header-ID or length specifier.
      Specified by:
        `getLocalFileDataData` in interface `ZipExtraField`
      Returns:
        the data

    - #### getLocalFileDataLength

          public ZipShort getLocalFileDataLength()

      Length of the extra field in the local file data - without Header-ID or length specifier.
      Specified by:
        `getLocalFileDataLength` in interface `ZipExtraField`
      Returns:
        the length of the field in the local file data

    - #### parseFromLocalFileData

          public void parseFromLocalFileData(byte[] buffer,
                                    int offset,
                                    int length)
                                      throws java.util.zip.ZipException

      Populate data from this array as if it was in local file data.
      Specified by:
        `parseFromLocalFileData` in interface `ZipExtraField`
      Parameters:
        `buffer` - an array of bytes
        `offset` - the start offset
        `length` - the number of bytes in the array from offset
      Throws:
        `java.util.zip.ZipException` - on error