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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | 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 comment in `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