Extension that adds better handling of extra fields and provides
access to the internal and external file attributes.
PLATFORM_FAT
private static final int PLATFORM_FAT
PLATFORM_UNIX
private static final int PLATFORM_UNIX
compressedSize
private Long compressedSize
Helper for JDK 1.1 <-> 1.2 incompatibility.
externalAttributes
private long externalAttributes
extraFields
private Vector extraFields
internalAttributes
private int internalAttributes
lockReflection
private static final Object lockReflection
Helper for JDK 1.1
platform
private int platform
setCompressedSizeMethod
private static Method setCompressedSizeMethod
Helper for JDK 1.1
triedToGetMethod
private static boolean triedToGetMethod
Helper for JDK 1.1
addExtraField
public void addExtraField(ZipExtraField ze)
Adds an extra fields - replacing an already present extra field
of the same type.
checkSCS
private static void checkSCS()
Try to get a handle to the setCompressedSize method.
clone
public Object clone()
Overwrite clone
getCentralDirectoryExtra
public byte[] getCentralDirectoryExtra()
Retrieves the extra data for the central directory.
getCompressedSize
public long getCompressedSize()
Override to make this class work in JDK 1.1 like a 1.2 class.
getExternalAttributes
public long getExternalAttributes()
Retrieves the external file attributes.
getExtraFields
public ZipExtraField[] getExtraFields()
Retrieves extra fields.
getInternalAttributes
public int getInternalAttributes()
Retrieves the internal file attributes.
getLocalFileDataExtra
public byte[] getLocalFileDataExtra()
Retrieves the extra data for the local file data.
getName
public String getName()
getPlatform
public int getPlatform()
Platform specification to put into the "version made
by" part of the central file header.
- 0 (MS-DOS FAT) unless
setUnixMode
has been called, in which case 3 (Unix) will be returned.
getUnixMode
public int getUnixMode()
Unix permission.
haveSetCompressedSize
private static boolean haveSetCompressedSize()
Are we running JDK 1.2 or higher?
isDirectory
public boolean isDirectory()
performSetCompressedSize
private static void performSetCompressedSize(ZipEntry ze,
long size)
Invoke setCompressedSize via reflection.
removeExtraField
public void removeExtraField(ZipShort type)
Remove an extra fields.
setComprSize
public void setComprSize(long size)
Make this class work in JDK 1.1 like a 1.2 class.
This either stores the size for later usage or invokes
setCompressedSize via reflection.
setExternalAttributes
public void setExternalAttributes(long value)
Sets the external file attributes.
setExtra
protected void setExtra()
Unfortunately java.util.zip.ZipOutputStream
seems to access the extra data
directly, so overriding getExtra doesn't help - we need to
modify super's data directly.
setExtra
public void setExtra(byte[] extra)
throws RuntimeException
Throws an Exception if extra data cannot be parsed into extra fields.
setExtraFields
public void setExtraFields(ZipExtraField[] fields)
Replaces all currently attached extra fields with the new array.
setInternalAttributes
public void setInternalAttributes(int value)
Sets the internal file attributes.
setName
protected void setName(String name)
setPlatform
protected void setPlatform(int platform)
setUnixMode
public void setUnixMode(int mode)
Sets Unix permissions in a way that is understood by Info-Zip's
unzip command.