public class ExtraFieldUtils extends Object
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 and Description |
---|
ExtraFieldUtils() |
Modifier and Type | Method and Description |
---|---|
static ZipExtraField |
createExtraField(ZipShort headerId)
Create an instance of the appropriate ExtraField, falls back to
UnrecognizedExtraField . |
static ZipExtraField |
createExtraFieldNoDefault(ZipShort headerId)
Create an instance of the appropriate ExtraField.
|
static ZipExtraField |
fillExtraField(ZipExtraField ze,
byte[] data,
int off,
int len,
boolean local)
Fills in the extra field data into the given instance.
|
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,
ExtraFieldParsingBehavior parsingBehavior)
Split the array into ExtraFields and populate them with the
given data.
|
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.
|
public ExtraFieldUtils()
public static void register(Class<?> c)
The given class must have a no-arg constructor and implement
the ZipExtraField interface
.
c
- the class to registerpublic static ZipExtraField createExtraField(ZipShort headerId) throws InstantiationException, IllegalAccessException
UnrecognizedExtraField
.headerId
- the header identifierInstantiationException
- if unable to instantiate the classIllegalAccessException
- if not allowed to instantiate the classpublic static ZipExtraField createExtraFieldNoDefault(ZipShort headerId) throws InstantiationException, IllegalAccessException
headerId
- the header identifierInstantiationException
- if unable to instantiate the classIllegalAccessException
- if not allowed to instantiate the classpublic static ZipExtraField[] parse(byte[] data) throws ZipException
data
- an array of bytes as it appears in local file dataZipException
- on errorpublic static ZipExtraField[] parse(byte[] data, boolean local) throws ZipException
data
- an array of byteslocal
- whether data originates from the local file data
or the central directoryZipException
- on errorpublic static ZipExtraField[] parse(byte[] data, boolean local, ExtraFieldUtils.UnparseableExtraField onUnparseableData) throws ZipException
data
- an array of byteslocal
- whether data originates from the local file data
or the central directoryonUnparseableData
- what to do if the extra field data
cannot be parsed.ZipException
- on errorpublic static ZipExtraField[] parse(byte[] data, boolean local, ExtraFieldParsingBehavior parsingBehavior) throws ZipException
data
- an array of bytesparsingBehavior
- controls parsing of extra fields.local
- whether data originates from the local file data
or the central directoryZipException
- on errorpublic static byte[] mergeLocalFileDataData(ZipExtraField[] data)
data
- an array of ExtraFilespublic static byte[] mergeCentralDirectoryData(ZipExtraField[] data)
data
- an array of ExtraFieldspublic static ZipExtraField fillExtraField(ZipExtraField ze, byte[] data, int off, int len, boolean local) throws ZipException
Calls ZipExtraField.parseFromCentralDirectoryData(byte[], int, int)
or ZipExtraField.parseFromLocalFileData(byte[], int, int)
internally and wraps any ArrayIndexOutOfBoundsException
thrown into a ZipException
.
ze
- the extra field instance to filldata
- the array of extra field dataoff
- offset into data where this field's data startslen
- the length of this field's datalocal
- 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.null
ZipException
- if an error occursCopyright © 2002–2022 The Apache Software Foundation. All rights reserved.