org.apache.commons.compress.archivers.zip

## Class ResourceAlignmentExtraField

- java.lang.Object
- - org.apache.commons.compress.archivers.zip.ResourceAlignmentExtraField

- All Implemented Interfaces:
    ZipExtraField

      public class ResourceAlignmentExtraField
      extends Object
      implements ZipExtraField

  An extra field who's sole purpose is to align and pad the local file header so that the entry's data starts at a certain position.

  The padding content of the padding is ignored and not retained when reading a padding field.

  This enables Commons Compress to create "aligned" archives similar to Android's `zipalign` command line tool.

  Since:
    1.14
  See Also:
    "https://developer.android.com/studio/command-line/zipalign.html", `ZipArchiveEntry.setAlignment(int)`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `BASE_SIZE`
    `static ZipShort` | `ID` Extra field id used for storing alignment and padding.

    - ### Fields inherited from interface org.apache.commons.compress.archivers.zip.ZipExtraField

      `EXTRAFIELD_HEADER_SIZE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ResourceAlignmentExtraField()`
    `ResourceAlignmentExtraField(int alignment)`
    `ResourceAlignmentExtraField(int alignment, boolean allowMethodChange)`
    `ResourceAlignmentExtraField(int alignment, boolean allowMethodChange, int padding)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `allowMethodChange()` Indicates whether method change is allowed when re-compressing the ZIP file.
    `short` | `getAlignment()` Gets requested alignment.
    `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.
    `ZipShort` | `getHeaderId()` The Header-ID.
    `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.
    `void` | `parseFromCentralDirectoryData(byte[] buffer, int offset, int length)` Populate data from this array as if it was in central directory data.
    `void` | `parseFromLocalFileData(byte[] buffer, int offset, int length)` Populate data from this array as if it was in local file data.

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

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

- - ### Field Detail

    - #### ID

          public static final ZipShort ID

      Extra field id used for storing alignment and padding.

    - #### BASE_SIZE

          public static final int BASE_SIZE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ResourceAlignmentExtraField

          public ResourceAlignmentExtraField()

    - #### ResourceAlignmentExtraField

          public ResourceAlignmentExtraField(int alignment)

    - #### ResourceAlignmentExtraField

          public ResourceAlignmentExtraField(int alignment,
                                             boolean allowMethodChange)

    - #### ResourceAlignmentExtraField

          public ResourceAlignmentExtraField(int alignment,
                                             boolean allowMethodChange,
                                             int padding)

  - ### Method Detail

    - #### allowMethodChange

          public boolean allowMethodChange()

      Indicates whether method change is allowed when re-compressing the ZIP file.
      Returns:
        true if method change is allowed, false otherwise.

    - #### getAlignment

          public short getAlignment()

      Gets requested alignment.
      Returns:
        requested alignment.

    - #### getCentralDirectoryData

          public byte[] getCentralDirectoryData()

      Description copied from interface: `ZipExtraField`
      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()

      Description copied from interface: `ZipExtraField`
      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

    - #### getHeaderId

          public ZipShort getHeaderId()

      Description copied from interface: `ZipExtraField`
      The Header-ID.
      Specified by:
        `getHeaderId` in interface `ZipExtraField`
      Returns:
        The HeaderId value

    - #### getLocalFileDataData

          public byte[] getLocalFileDataData()

      Description copied from interface: `ZipExtraField`
      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()

      Description copied from interface: `ZipExtraField`
      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

    - #### parseFromCentralDirectoryData

          public void parseFromCentralDirectoryData(byte[] buffer,
                                                    int offset,
                                                    int length)
                                             throws ZipException

      Description copied from interface: `ZipExtraField`
      Populate data from this array as if it was in central directory data.
      Specified by:
        `parseFromCentralDirectoryData` in interface `ZipExtraField`
      Parameters:
        `buffer` - the buffer to read data from
        `offset` - offset into buffer to read data
        `length` - the length of data
      Throws:
        `ZipException` - on error

    - #### parseFromLocalFileData

          public void parseFromLocalFileData(byte[] buffer,
                                             int offset,
                                             int length)
                                      throws ZipException

      Description copied from interface: `ZipExtraField`
      Populate data from this array as if it was in local file data.
      Specified by:
        `parseFromLocalFileData` in interface `ZipExtraField`
      Parameters:
        `buffer` - the buffer to read data from
        `offset` - offset into buffer to read data
        `length` - the length of data
      Throws:
        `ZipException` - on error

Copyright © 2002–2022 The Apache Software Foundation. All rights reserved.