Package 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
  Description
  `static final int`
  `BASE_SIZE`
  `static final 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
  Description
  `ResourceAlignmentExtraField()`
  `ResourceAlignmentExtraField(int alignment)`
  `ResourceAlignmentExtraField(int alignment, boolean allowMethodChange)`
  `ResourceAlignmentExtraField(int alignment, boolean allowMethodChange, int padding)`

- ## Method Summary

  Modifier and Type
  Method
  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 Details

  - ### 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 Details

  - ### 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 Details

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