Class ExtraFieldUtils
java.lang.Object
org.apache.commons.compress.archivers.zip.ExtraFieldUtils
ZipExtraField
related methods.-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
"enum" for the possible actions to take if the extra field cannot be parsed. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic ZipExtraField
createExtraField
(ZipShort headerId) Creates an instance of the appropriate ExtraField, falls back toUnrecognizedExtraField
.static ZipExtraField
createExtraFieldNoDefault
(ZipShort headerId) Creates an instance of the appropriateZipExtraField
.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[]
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) Parses 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) Parses 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) Parses the array into ExtraFields and populate them with the given data.static ZipExtraField[]
parse
(byte[] data, boolean local, ExtraFieldUtils.UnparseableExtraField onUnparseableData) Parses the array into ExtraFields and populate them with the given data.static void
Deprecated.
-
Constructor Details
-
ExtraFieldUtils
public ExtraFieldUtils()
-
-
Method Details
-
createExtraField
Creates an instance of the appropriate ExtraField, falls back toUnrecognizedExtraField
.- Parameters:
headerId
- the header identifier- Returns:
- an instance of the appropriate ExtraField
-
createExtraFieldNoDefault
Creates an instance of the appropriateZipExtraField
.- Parameters:
headerId
- the header identifier- Returns:
- an instance of the appropriate
ZipExtraField
or null if the id is not supported - Since:
- 1.19
-
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)
orZipExtraField.parseFromLocalFileData(byte[], int, int)
internally and wraps anyArrayIndexOutOfBoundsException
thrown into aZipException
.- Parameters:
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.- Returns:
- the filled field, will never be
null
- Throws:
ZipException
- if an error occurs- Since:
- 1.19
-
mergeCentralDirectoryData
Merges the central directory fields of the given ZipExtraFields.- Parameters:
data
- an array of ExtraFields- Returns:
- an array of bytes
-
mergeLocalFileDataData
Merges the local file data fields of the given ZipExtraFields.- Parameters:
data
- an array of ExtraFiles- Returns:
- an array of bytes
-
parse
Parses 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
Parses 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 byteslocal
- 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, ExtraFieldParsingBehavior parsingBehavior) throws ZipException Parses the array into ExtraFields and populate them with the given data.- Parameters:
data
- an array of bytesparsingBehavior
- 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
-
parse
public static ZipExtraField[] parse(byte[] data, boolean local, ExtraFieldUtils.UnparseableExtraField onUnparseableData) throws ZipException Parses the array into ExtraFields and populate them with the given data.- Parameters:
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.- Returns:
- an array of ExtraFields
- Throws:
ZipException
- on error- Since:
- 1.1
-
register
Deprecated.UseZipArchiveInputStream.setExtraFieldSupport(java.util.function.Function<org.apache.commons.compress.archivers.zip.ZipShort, org.apache.commons.compress.archivers.zip.ZipExtraField>)
instead to not leak instances between archives and applications.Registers a ZipExtraField implementation, overriding a matching existing entry.The given class must have a no-arg constructor and implement the
ZipExtraField interface
.- Parameters:
clazz
- the class to register.
-
ZipArchiveInputStream.setExtraFieldSupport(java.util.function.Function<org.apache.commons.compress.archivers.zip.ZipShort, org.apache.commons.compress.archivers.zip.ZipExtraField>)
instead to not leak instances between archives and applications.