Class AsiExtraField

  • All Implemented Interfaces:
    java.lang.Cloneable, UnixStat, ZipExtraField

    public class AsiExtraField
    extends java.lang.Object
    implements ZipExtraField, UnixStat, java.lang.Cloneable
    Adds Unix file permission and UID/GID fields as well as symbolic link handling.

    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 file name
     

    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.

    • Constructor Detail

      • AsiExtraField

        public AsiExtraField()
        Constructor for AsiExtraField.
    • Method Detail

      • getHeaderId

        public ZipShort getHeaderId()
        The Header-ID.
        Specified by:
        getHeaderId in interface ZipExtraField
        Returns:
        the value for the header id for this extrafield
      • getLocalFileDataLength

        public ZipShort getLocalFileDataLength()
        Length of the extra field in the local file data - without Header-ID or length specifier.
        Specified by:
        getLocalFileDataLength in interface ZipExtraField
        Returns:
        a ZipShort for the length of the data of this extra field
      • getLocalFileDataData

        public byte[] getLocalFileDataData()
        The actual data to put into local file data - without Header-ID or length specifier.
        Specified by:
        getLocalFileDataData in interface ZipExtraField
        Returns:
        get the data
      • getCentralDirectoryData

        public byte[] getCentralDirectoryData()
        Delegate to local file data.
        Specified by:
        getCentralDirectoryData in interface ZipExtraField
        Returns:
        the local file data
      • setUserId

        public void setUserId​(int uid)
        Set the user id.
        Parameters:
        uid - the user id
      • getUserId

        public int getUserId()
        Get the user id.
        Returns:
        the user id
      • setGroupId

        public void setGroupId​(int gid)
        Set the group id.
        Parameters:
        gid - the group id
      • getGroupId

        public int getGroupId()
        Get the group id.
        Returns:
        the group id
      • setLinkedFile

        public void setLinkedFile​(java.lang.String name)
        Indicate that this entry is a symbolic link to the given file name.
        Parameters:
        name - Name of the file this entry links to, empty String if it is not a symbolic link.
      • getLinkedFile

        public java.lang.String getLinkedFile()
        Name of linked file
        Returns:
        name of the file this entry links to if it is a symbolic link, the empty string otherwise.
      • isLink

        public boolean isLink()
        Is this entry a symbolic link?
        Returns:
        true if this is a symbolic link
      • setMode

        public void setMode​(int mode)
        File mode of this file.
        Parameters:
        mode - the file mode
      • getMode

        public int getMode()
        File mode of this file.
        Returns:
        the file mode
      • setDirectory

        public void setDirectory​(boolean dirFlag)
        Indicate whether this entry is a directory.
        Parameters:
        dirFlag - if true, this entry is a directory
      • isDirectory

        public boolean isDirectory()
        Is this entry a directory?
        Returns:
        true if this entry is a directory
      • parseFromLocalFileData

        public void parseFromLocalFileData​(byte[] data,
                                           int offset,
                                           int length)
                                    throws java.util.zip.ZipException
        Populate data from this array as if it was in local file data.
        Specified by:
        parseFromLocalFileData in interface ZipExtraField
        Parameters:
        data - an array of bytes
        offset - the start offset
        length - the number of bytes in the array from offset
        Throws:
        java.util.zip.ZipException - on error
      • parseFromCentralDirectoryData

        public void parseFromCentralDirectoryData​(byte[] buffer,
                                                  int offset,
                                                  int length)
                                           throws java.util.zip.ZipException
        Doesn't do anything special since this class always uses the same data in central directory and local file data.
        Specified by:
        parseFromCentralDirectoryData in interface ZipExtraField
        Parameters:
        buffer - the buffer to read data from
        offset - offset into buffer to read data
        length - the length of data
        Throws:
        java.util.zip.ZipException - on error
      • clone

        public java.lang.Object clone()