public class AsiExtraField extends java.lang.Object implements ZipExtraField, UnixStat, java.lang.Cloneable
This class uses the ASi extra field in the format:
Value Size Description ----- ---- ----------- (Unix3) 0x756e Short tag for this extra block type TSize Short total data size for this block CRC Long CRC-32 of the remaining data Mode Short file permissions SizDev Long symlink'd size OR major/minor dev num UID Short user ID GID Short group ID (var.) variable symbolic link filename
taken from appnote.iz (Info-ZIP note, 981119) found at ftp://ftp.uu.net/pub/archiving/zip/doc/
Short is two bytes and Long is four bytes in big endian byte and word order, device numbers are currently not supported.
Modifier and Type | Field and Description |
---|---|
private java.util.zip.CRC32 |
crc
Instance used to calculate checksums.
|
private boolean |
dirFlag
Is this an entry for a directory?
|
private int |
gid
Group ID.
|
private static ZipShort |
HEADER_ID |
private java.lang.String |
link
File this entry points to, if it is a symbolic link.
|
private int |
mode
Standard Unix stat(2) file mode.
|
private int |
uid
User ID.
|
private static int |
WORD |
EXTRAFIELD_HEADER_SIZE
DEFAULT_DIR_PERM, DEFAULT_FILE_PERM, DEFAULT_LINK_PERM, DIR_FLAG, FILE_FLAG, FILE_TYPE_FLAG, LINK_FLAG, PERM_MASK
Constructor and Description |
---|
AsiExtraField()
Constructor for AsiExtraField.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
clone() |
byte[] |
getCentralDirectoryData()
Delegate to local file data.
|
ZipShort |
getCentralDirectoryLength()
Delegate to local file data.
|
int |
getGroupId()
Get the group id.
|
ZipShort |
getHeaderId()
The Header-ID.
|
java.lang.String |
getLinkedFile()
Name of linked file
|
byte[] |
getLocalFileDataData()
The actual data to put into local file data - without Header-ID
or length specifier.
|
ZipShort |
getLocalFileDataLength()
Length of the extra field in the local file data - without
Header-ID or length specifier.
|
int |
getMode()
File mode of this file.
|
protected int |
getMode(int mode)
Get the file mode for given permissions with the correct file type.
|
int |
getUserId()
Get the user id.
|
boolean |
isDirectory()
Is this entry a directory?
|
boolean |
isLink()
Is this entry a symbolic link?
|
void |
parseFromCentralDirectoryData(byte[] buffer,
int offset,
int length)
Doesn't do anything special since this class always uses the
same data in central directory and local file data.
|
void |
parseFromLocalFileData(byte[] data,
int offset,
int length)
Populate data from this array as if it was in local file data.
|
void |
setDirectory(boolean dirFlag)
Indicate whether this entry is a directory.
|
void |
setGroupId(int gid)
Set the group id.
|
void |
setLinkedFile(java.lang.String name)
Indicate that this entry is a symbolic link to the given filename.
|
void |
setMode(int mode)
File mode of this file.
|
void |
setUserId(int uid)
Set the user id.
|
private static final ZipShort HEADER_ID
private static final int WORD
private int mode
private int uid
private int gid
private java.lang.String link
empty string - if entry is not a symbolic link.
private boolean dirFlag
private java.util.zip.CRC32 crc
public ZipShort getHeaderId()
getHeaderId
in interface ZipExtraField
public ZipShort getLocalFileDataLength()
getLocalFileDataLength
in interface ZipExtraField
ZipShort
for the length of the data of this extra fieldpublic ZipShort getCentralDirectoryLength()
getCentralDirectoryLength
in interface ZipExtraField
public byte[] getLocalFileDataData()
getLocalFileDataData
in interface ZipExtraField
public byte[] getCentralDirectoryData()
getCentralDirectoryData
in interface ZipExtraField
public void setUserId(int uid)
uid
- the user idpublic int getUserId()
public void setGroupId(int gid)
gid
- the group idpublic int getGroupId()
public void setLinkedFile(java.lang.String name)
name
- Name of the file this entry links to, empty String
if it is not a symbolic link.public java.lang.String getLinkedFile()
public boolean isLink()
public void setMode(int mode)
mode
- the file modepublic int getMode()
public void setDirectory(boolean dirFlag)
dirFlag
- if true, this entry is a directorypublic boolean isDirectory()
public void parseFromLocalFileData(byte[] data, int offset, int length) throws java.util.zip.ZipException
parseFromLocalFileData
in interface ZipExtraField
data
- an array of bytesoffset
- the start offsetlength
- the number of bytes in the array from offsetjava.util.zip.ZipException
- on errorpublic void parseFromCentralDirectoryData(byte[] buffer, int offset, int length) throws java.util.zip.ZipException
parseFromCentralDirectoryData
in interface ZipExtraField
buffer
- the buffer to read data fromoffset
- offset into buffer to read datalength
- the length of datajava.util.zip.ZipException
- on errorprotected int getMode(int mode)
mode
- the modepublic java.lang.Object clone()
clone
in class java.lang.Object