Class ExtraFieldUtils


  • public class ExtraFieldUtils
    extends java.lang.Object
    ZipExtraField related methods
    • Constructor Detail

      • ExtraFieldUtils

        public ExtraFieldUtils()
    • Method Detail

      • register

        public static void register​(java.lang.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 java.lang.InstantiationException,
                                                     java.lang.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:
        java.lang.InstantiationException - if unable to instantiate the class
        java.lang.IllegalAccessException - if not allowed to instantiate the class
      • createExtraFieldNoDefault

        public static ZipExtraField createExtraFieldNoDefault​(ZipShort headerId)
                                                       throws java.lang.InstantiationException,
                                                              java.lang.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:
        java.lang.InstantiationException - if unable to instantiate the class
        java.lang.IllegalAccessException - if not allowed to instantiate the class
        Since:
        1.19
      • parse

        public static ZipExtraField[] parse​(byte[] data)
                                     throws java.util.zip.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:
        java.util.zip.ZipException - on error
      • parse

        public static ZipExtraField[] parse​(byte[] data,
                                            boolean local)
                                     throws java.util.zip.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:
        java.util.zip.ZipException - on error
      • parse

        public static ZipExtraField[] parse​(byte[] data,
                                            boolean local,
                                            ExtraFieldUtils.UnparseableExtraField onUnparseableData)
                                     throws java.util.zip.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:
        java.util.zip.ZipException - on error
        Since:
        1.1
      • parse

        public static ZipExtraField[] parse​(byte[] data,
                                            boolean local,
                                            ExtraFieldParsingBehavior parsingBehavior)
                                     throws java.util.zip.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:
        java.util.zip.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 java.util.zip.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:
        java.util.zip.ZipException - if an error occurs
        Since:
        1.19