# ExtraFieldUtils (Apache Commons Compress 1.13 API)

org.apache.commons.compress.archivers.zip

## Class ExtraFieldUtils

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

-     public class ExtraFieldUtils
      extends Object

  ZipExtraField related methods
  This class is not thread-safe
    because the HashMap is not synch.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ExtraFieldUtils.UnparseableExtraField` "enum" for the possible actions to take if the extra field cannot be parsed.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ExtraFieldUtils()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static ZipExtraField` | `createExtraField(ZipShort headerId)` Create an instance of the appropriate ExtraField, falls back to `UnrecognizedExtraField`.
    `static byte[]` | `mergeCentralDirectoryData(ZipExtraField[] data)` Merges the central directory fields of the given ZipExtraFields.
    `static byte[]` | `mergeLocalFileDataData(ZipExtraField[] data)` Merges the local file data fields of the given ZipExtraFields.
    `static ZipExtraField[]` | `parse(byte[] data)` 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.
    `static ZipExtraField[]` | `parse(byte[] data, boolean local)` Split the array into ExtraFields and populate them with the given data, throwing an exception if the data cannot be parsed.
    `static ZipExtraField[]` | `parse(byte[] data, boolean local, ExtraFieldUtils.UnparseableExtraField onUnparseableData)` Split the array into ExtraFields and populate them with the given data.
    `static void` | `register(Class<?> c)` Register a ZipExtraField implementation.

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

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

- - ### Constructor Detail

    - #### ExtraFieldUtils

          public ExtraFieldUtils()

  - ### Method Detail

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

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

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

Copyright © 2016 The Apache Software Foundation. All rights reserved.