Class TarHeader

  • All Implemented Interfaces:
    Cloneable

    public class TarHeader
    extends Object
    implements Cloneable
    This class encapsulates the Tar Entry Header used in Tar Archives. The class also holds a number of tar constants, used mostly in headers.
    Author:
    Timothy Gerard Endres,
    • Field Summary

      Fields 
      Modifier and Type Field Description
      int checkSum
      The entry's checksum.
      static int CHKSUMLEN
      The length of the checksum field in a header buffer.
      static int DEVLEN
      The length of the devices field in a header buffer.
      int devMajor
      The entry's major device number.
      int devMinor
      The entry's minor device number.
      static int GIDLEN
      The length of the group id field in a header buffer.
      static int GNAMELEN
      The length of the group name field in a header buffer.
      static String GNU_TMAGIC
      The magic tag representing a GNU tar archive.
      int groupId
      The entry's group id.
      StringBuffer groupName
      The entry's group name.
      static byte LF_BLK
      Block device file type.
      static byte LF_CHR
      Character device file type.
      static byte LF_CONTIG
      Contiguous file type.
      static byte LF_DIR
      Directory file type.
      static byte LF_FIFO
      FIFO (pipe) file type.
      static byte LF_LINK
      Link file type.
      static byte LF_NORMAL
      Normal file type.
      static byte LF_OLDNORM
      LF_ constants represent the "link flag" of an entry, or more commonly, the "entry type".
      static byte LF_SYMLINK
      Symbolic link file type.
      byte linkFlag
      The entry's link flag.
      StringBuffer linkName
      The entry's link name.
      StringBuffer magic
      The entry's magic tag.
      static int MAGICLEN
      The length of the magic field in a header buffer.
      int mode
      The entry's permission mode.
      static int MODELEN
      The length of the mode field in a header buffer.
      long modTime
      The entry's modification time.
      static int MODTIMELEN
      The length of the modification time field in a header buffer.
      StringBuffer name
      The entry's name.
      static int NAMELEN
      The length of the name field in a header buffer.
      static int NAMEOFFSET
      The offset of the name field in a header buffer.
      static int PREFIXLEN
      The length of the name prefix field in a header buffer.
      static int PREFIXOFFSET
      The offset of the name prefix field in a header buffer.
      long size
      The entry's size.
      static int SIZELEN
      The length of the size field in a header buffer.
      static String TMAGIC
      The magic tag representing a POSIX tar archive.
      static int UIDLEN
      The length of the user id field in a header buffer.
      static int UNAMELEN
      The length of the user name field in a header buffer.
      int userId
      The entry's user id.
      StringBuffer userName
      The entry's user name.
    • Constructor Summary

      Constructors 
      Constructor Description
      TarHeader()  
    • Field Detail

      • NAMELEN

        public static final int NAMELEN
        The length of the name field in a header buffer.
        See Also:
        Constant Field Values
      • NAMEOFFSET

        public static final int NAMEOFFSET
        The offset of the name field in a header buffer.
        See Also:
        Constant Field Values
      • PREFIXLEN

        public static final int PREFIXLEN
        The length of the name prefix field in a header buffer.
        See Also:
        Constant Field Values
      • PREFIXOFFSET

        public static final int PREFIXOFFSET
        The offset of the name prefix field in a header buffer.
        See Also:
        Constant Field Values
      • MODELEN

        public static final int MODELEN
        The length of the mode field in a header buffer.
        See Also:
        Constant Field Values
      • UIDLEN

        public static final int UIDLEN
        The length of the user id field in a header buffer.
        See Also:
        Constant Field Values
      • GIDLEN

        public static final int GIDLEN
        The length of the group id field in a header buffer.
        See Also:
        Constant Field Values
      • CHKSUMLEN

        public static final int CHKSUMLEN
        The length of the checksum field in a header buffer.
        See Also:
        Constant Field Values
      • SIZELEN

        public static final int SIZELEN
        The length of the size field in a header buffer.
        See Also:
        Constant Field Values
      • MAGICLEN

        public static final int MAGICLEN
        The length of the magic field in a header buffer.
        See Also:
        Constant Field Values
      • MODTIMELEN

        public static final int MODTIMELEN
        The length of the modification time field in a header buffer.
        See Also:
        Constant Field Values
      • UNAMELEN

        public static final int UNAMELEN
        The length of the user name field in a header buffer.
        See Also:
        Constant Field Values
      • GNAMELEN

        public static final int GNAMELEN
        The length of the group name field in a header buffer.
        See Also:
        Constant Field Values
      • DEVLEN

        public static final int DEVLEN
        The length of the devices field in a header buffer.
        See Also:
        Constant Field Values
      • LF_OLDNORM

        public static final byte LF_OLDNORM
        LF_ constants represent the "link flag" of an entry, or more commonly, the "entry type". This is the "old way" of indicating a normal file.
        See Also:
        Constant Field Values
      • LF_SYMLINK

        public static final byte LF_SYMLINK
        Symbolic link file type.
        See Also:
        Constant Field Values
      • mode

        public int mode
        The entry's permission mode.
      • userId

        public int userId
        The entry's user id.
      • groupId

        public int groupId
        The entry's group id.
      • size

        public long size
        The entry's size.
      • modTime

        public long modTime
        The entry's modification time.
      • checkSum

        public int checkSum
        The entry's checksum.
      • linkFlag

        public byte linkFlag
        The entry's link flag.
      • linkName

        public StringBuffer linkName
        The entry's link name.
      • userName

        public StringBuffer userName
        The entry's user name.
      • groupName

        public StringBuffer groupName
        The entry's group name.
      • devMajor

        public int devMajor
        The entry's major device number.
      • devMinor

        public int devMinor
        The entry's minor device number.
    • Constructor Detail

      • TarHeader

        public TarHeader()
    • Method Detail

      • clone

        public Object clone()
        TarHeaders can be cloned.
        Overrides:
        clone in class Object
      • getName

        public String getName()
        Get the name of this entry.
        Returns:
        Teh entry's name.
      • parseOctal

        public static long parseOctal​(byte[] header,
                                      int offset,
                                      int length)
                               throws InvalidHeaderException
        Parse an octal string from a header buffer. This is used for the file permission mode value.
        Parameters:
        header - The header buffer from which to parse.
        offset - The offset into the buffer from which to parse.
        length - The number of header bytes to parse.
        Returns:
        The long value of the octal string.
        Throws:
        InvalidHeaderException
      • parseFileName

        public static StringBuffer parseFileName​(byte[] header)
        Parse a file name from a header buffer. This is different from parseName() in that is recognizes 'ustar' names and will handle adding on the "prefix" field to the name. Contributed by Dmitri Tikhonov
        Parameters:
        header - The header buffer from which to parse.
        offset - The offset into the buffer from which to parse.
        length - The number of header bytes to parse.
        Returns:
        The header's entry name.
      • parseName

        public static StringBuffer parseName​(byte[] header,
                                             int offset,
                                             int length)
                                      throws InvalidHeaderException
        Parse an entry name from a header buffer.
        Parameters:
        header - The header buffer from which to parse.
        offset - The offset into the buffer from which to parse.
        length - The number of header bytes to parse.
        Returns:
        The header's entry name.
        Throws:
        InvalidHeaderException
      • getFileNameBytes

        public static int getFileNameBytes​(String newName,
                                           byte[] outbuf)
                                    throws InvalidHeaderException
        This method, like getNameBytes(), is intended to place a name into a TarHeader's buffer. However, this method is sophisticated enough to recognize long names (name.length() > NAMELEN). In these cases, the method will break the name into a prefix and suffix and place the name in the header in 'ustar' format. It is up to the TarEntry to manage the "entry header format". This method assumes the name is valid for the type of archive being generated.
        Parameters:
        outbuf - The buffer containing the entry header to modify.
        newName - The new name to place into the header buffer.
        Returns:
        The current offset in the tar header (always TarHeader.NAMELEN).
        Throws:
        InvalidHeaderException - If the name will not fit in the header.
      • getNameBytes

        public static int getNameBytes​(StringBuffer name,
                                       byte[] buf,
                                       int offset,
                                       int length)
        Move the bytes from the name StringBuffer into the header's buffer.
        Parameters:
        header - The header buffer into which to copy the name.
        offset - The offset into the buffer at which to store.
        length - The number of header bytes to store.
        Returns:
        The new offset (offset + length).
      • getOctalBytes

        public static int getOctalBytes​(long value,
                                        byte[] buf,
                                        int offset,
                                        int length)
        Parse an octal integer from a header buffer.
        Parameters:
        header - The header buffer from which to parse.
        offset - The offset into the buffer from which to parse.
        length - The number of header bytes to parse.
        Returns:
        The integer value of the octal bytes.
      • getLongOctalBytes

        public static int getLongOctalBytes​(long value,
                                            byte[] buf,
                                            int offset,
                                            int length)
        Parse an octal long integer from a header buffer.
        Parameters:
        header - The header buffer from which to parse.
        offset - The offset into the buffer from which to parse.
        length - The number of header bytes to parse.
        Returns:
        The long value of the octal bytes.
      • getCheckSumOctalBytes

        public static int getCheckSumOctalBytes​(long value,
                                                byte[] buf,
                                                int offset,
                                                int length)
        Parse the checksum octal integer from a header buffer.
        Parameters:
        header - The header buffer from which to parse.
        offset - The offset into the buffer from which to parse.
        length - The number of header bytes to parse.
        Returns:
        The integer value of the entry's checksum.