Class ExtraFieldUtils

java.lang.Object
org.apache.commons.compress.archivers.zip.ExtraFieldUtils

public class ExtraFieldUtils extends Object
ZipExtraField related methods
  • Field Details

    • WORD

      private static final int WORD
      See Also:
    • implementations

      private static final Map<ZipShort,Class<?>> implementations
      Static registry of known extra fields.
    • EMPTY_ZIP_EXTRA_FIELD_ARRAY

      static final ZipExtraField[] EMPTY_ZIP_EXTRA_FIELD_ARRAY
  • Constructor Details

    • ExtraFieldUtils

      public ExtraFieldUtils()
  • Method Details

    • register

      public static void register(Class<?> c)
      Register a ZipExtraField implementation.

      The given class must have a no-arg constructor and implement the ZipExtraField interface.

      Parameters:
      c - the class to register
    • createExtraField

      public static ZipExtraField createExtraField(ZipShort headerId) throws InstantiationException, IllegalAccessException
      Create an instance of the appropriate ExtraField, falls back to UnrecognizedExtraField.
      Parameters:
      headerId - the header identifier
      Returns:
      an instance of the appropriate ExtraField
      Throws:
      InstantiationException - if unable to instantiate the class
      IllegalAccessException - if not allowed to instantiate the class
    • createExtraFieldNoDefault

      public static ZipExtraField createExtraFieldNoDefault(ZipShort headerId) throws InstantiationException, IllegalAccessException
      Create an instance of the appropriate ExtraField.
      Parameters:
      headerId - the header identifier
      Returns:
      an instance of the appropriate ExtraField or null if the id is not supported
      Throws:
      InstantiationException - if unable to instantiate the class
      IllegalAccessException - if not allowed to instantiate the class
      Since:
      1.19
    • parse

      public static ZipExtraField[] parse(byte[] data) throws ZipException
      Split the array into ExtraFields and populate them with the given data as local file data, throwing an exception if the data cannot be parsed.
      Parameters:
      data - an array of bytes as it appears in local file data
      Returns:
      an array of ExtraFields
      Throws:
      ZipException - on error
    • parse

      public static ZipExtraField[] parse(byte[] data, boolean local) throws ZipException
      Split the array into ExtraFields and populate them with the given data, throwing an exception if the data cannot be parsed.
      Parameters:
      data - an array of bytes
      local - whether data originates from the local file data or the central directory
      Returns:
      an array of ExtraFields
      Throws:
      ZipException - on error
    • parse

      public static ZipExtraField[] parse(byte[] data, boolean local, ExtraFieldUtils.UnparseableExtraField onUnparseableData) throws ZipException
      Split the array into ExtraFields and populate them with the given data.
      Parameters:
      data - an array of bytes
      local - whether data originates from the local file data or the central directory
      onUnparseableData - what to do if the extra field data cannot be parsed.
      Returns:
      an array of ExtraFields
      Throws:
      ZipException - on error
      Since:
      1.1
    • parse

      public static ZipExtraField[] parse(byte[] data, boolean local, ExtraFieldParsingBehavior parsingBehavior) throws ZipException
      Split the array into ExtraFields and populate them with the given data.
      Parameters:
      data - an array of bytes
      parsingBehavior - controls parsing of extra fields.
      local - whether data originates from the local file data or the central directory
      Returns:
      an array of ExtraFields
      Throws:
      ZipException - on error
      Since:
      1.19
    • mergeLocalFileDataData

      public static byte[] mergeLocalFileDataData(ZipExtraField[] data)
      Merges the local file data fields of the given ZipExtraFields.
      Parameters:
      data - an array of ExtraFiles
      Returns:
      an array of bytes
    • mergeCentralDirectoryData

      public static byte[] mergeCentralDirectoryData(ZipExtraField[] data)
      Merges the central directory fields of the given ZipExtraFields.
      Parameters:
      data - an array of ExtraFields
      Returns:
      an array of bytes
    • fillExtraField

      public static ZipExtraField fillExtraField(ZipExtraField ze, byte[] data, int off, int len, boolean local) throws ZipException
      Fills in the extra field data into the given instance.

      Calls ZipExtraField.parseFromCentralDirectoryData(byte[], int, int) or ZipExtraField.parseFromLocalFileData(byte[], int, int) internally and wraps any ArrayIndexOutOfBoundsException thrown into a ZipException.

      Parameters:
      ze - the extra field instance to fill
      data - the array of extra field data
      off - offset into data where this field's data starts
      len - the length of this field's data
      local - whether the extra field data stems from the local file header. If this is false then the data is part if the central directory header extra data.
      Returns:
      the filled field, will never be null
      Throws:
      ZipException - if an error occurs
      Since:
      1.19