Class TarEntry
- java.lang.Object
-
- org.apache.commons.compress.archivers.tar.TarEntry
-
public class TarEntry extends java.lang.Object
This class represents an entry in a Tar archive. It consists of the entry's header, as well as the entry's File. Entries can be instantiated in one of three ways, depending on how they are to be used.TarEntries that are created from the header bytes read from an archive are instantiated with the TarEntry( byte[] ) constructor. These entries will be used when extracting from or listing the contents of an archive. These entries have their header filled in using the header bytes. They also set the File to null, since they reference an archive entry not a file.
TarEntries that are created from Files that are to be written into an archive are instantiated with the TarEntry( File ) constructor. These entries have their header filled in using the File's information. They also keep a reference to the File for convenience when writing entries.
Finally, TarEntries can be constructed from nothing but a name. This allows the programmer to construct the entry by hand, for instance when only an InputStream is available for writing to the archive, and the header information is constructed from other information. In this case the header fields are set to defaults and the File is set to null.
The C structure for a Tar Entry's header is:
struct header { char name[NAMSIZ]; char mode[8]; char uid[8]; char gid[8]; char size[12]; char mtime[12]; char chksum[8]; char linkflag; char linkname[NAMSIZ]; char magic[8]; char uname[TUNMLEN]; char gname[TGNMLEN]; char devmajor[8]; char devminor[8]; } header;
- Version:
- $Revision: 155439 $ $Date: 2008-07-06 01:07:12 -0400 (Sun, 06 Jul 2008) $
- Author:
- Timothy Gerard Endres, Stefano Mazzocchi, Peter Donald
- See Also:
TarInputStream
,TarOutputStream
-
-
Field Summary
Fields Modifier and Type Field Description private static int
CHKSUMLEN
The length of the checksum field in a header buffer.private static int
DEVLEN
The length of the devices field in a header buffer.private static int
GIDLEN
The length of the group id field in a header buffer.private static int
GNAMELEN
The length of the group name field in a header buffer.(package private) static java.lang.String
GNU_LONGLINK
The name of the GNU tar entry which contains a long name.private static byte
LF_DIR
Directory file type.(package private) static byte
LF_GNUTYPE_LONGNAME
Identifies the *next* file on the tape as having a long name.private static byte
LF_NORMAL
Normal file type.private int
m_checkSum
The entry's modification time.private int
m_devMajor
The entry's group name.private int
m_devMinor
The entry's major device number.private java.io.File
m_file
The entry's minor device number.private int
m_groupID
The entry's user id.private java.lang.StringBuffer
m_groupName
The entry's user name.private byte
m_linkFlag
The entry's checksum.private java.lang.StringBuffer
m_linkName
The entry's link flag.private java.lang.StringBuffer
m_magic
The entry's link name.private int
m_mode
private long
m_modTime
The entry's size.private java.lang.StringBuffer
m_name
The entry's name.private long
m_size
The entry's group id.private int
m_userID
The entry's permission mode.private java.lang.StringBuffer
m_userName
The entry's magic tag.private static int
MAGICLEN
The length of the magic field in a header buffer.private static int
MODELEN
The length of the mode field in a header buffer.private static int
MODTIMELEN
The length of the modification time field in a header buffer.static int
NAMELEN
The length of the name field in a header buffer.private static int
SIZELEN
The length of the size field in a header buffer.private static java.lang.String
TMAGIC
The magic tag representing a POSIX tar archive.private static int
UIDLEN
The length of the user id field in a header buffer.private static int
UNAMELEN
The length of the user name field in a header buffer.
-
Constructor Summary
Constructors Modifier Constructor Description private
TarEntry()
Construct an empty entry and prepares the header values.TarEntry(byte[] header)
Construct an entry from an archive's header bytes.TarEntry(java.io.File file)
Construct an entry for a file.TarEntry(java.lang.String name)
Construct an entry with only a name.TarEntry(java.lang.String name, byte linkFlag)
Construct an entry with a name an a link flag.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
equals(TarEntry other)
Determine if the two entries are equal.int
getCheckSum()
Get this entry's checksum.TarEntry[]
getDirectoryEntries()
If this entry represents a file, and the file is a directory, return an array of TarEntries for this entry's children.java.io.File
getFile()
Get this entry's file.int
getGroupId()
Deprecated.Use getGroupID() insteadint
getGroupID()
Get this entry's group id.java.lang.String
getGroupName()
Get this entry's group name.int
getMode()
Get this entry's mode.java.util.Date
getModTime()
Set this entry's modification time.java.lang.String
getName()
Get this entry's name.long
getSize()
Get this entry's file size.int
getUserId()
Deprecated.Use getUserID() insteadint
getUserID()
Get this entry's user id.java.lang.String
getUserName()
Get this entry's user name.boolean
isDescendent(TarEntry desc)
Determine if the given entry is a descendant of this entry.boolean
isDirectory()
Return whether or not this entry represents a directory.boolean
isGNULongNameEntry()
Indicate if this entry is a GNU long name blockprivate void
parseTarHeader(byte[] header)
Parse an entry's header information from a header buffer.void
setGroupId(int groupId)
Deprecated.Use setGroupID() insteadvoid
setGroupID(int groupId)
Set this entry's group id.void
setGroupName(java.lang.String groupName)
Set this entry's group name.void
setMode(int mode)
Set the mode for this entryvoid
setModTime(long time)
Set this entry's modification time.void
setModTime(java.util.Date time)
Set this entry's modification time.void
setName(java.lang.String name)
Set this entry's name.void
setSize(long size)
Set this entry's file size.void
setUserId(int userId)
Deprecated.Use setUserID() insteadvoid
setUserID(int userId)
Set this entry's user id.void
setUserName(java.lang.String userName)
Set this entry's user name.void
writeEntryHeader(byte[] buffer)
Write an entry's header information to a header buffer.
-
-
-
Field Detail
-
MODELEN
private static final int MODELEN
The length of the mode field in a header buffer.- See Also:
- Constant Field Values
-
UIDLEN
private static final int UIDLEN
The length of the user id field in a header buffer.- See Also:
- Constant Field Values
-
GIDLEN
private static final int GIDLEN
The length of the group id field in a header buffer.- See Also:
- Constant Field Values
-
CHKSUMLEN
private static final int CHKSUMLEN
The length of the checksum field in a header buffer.- See Also:
- Constant Field Values
-
SIZELEN
private static final int SIZELEN
The length of the size field in a header buffer.- See Also:
- Constant Field Values
-
MAGICLEN
private static final int MAGICLEN
The length of the magic field in a header buffer.- See Also:
- Constant Field Values
-
MODTIMELEN
private static final int MODTIMELEN
The length of the modification time field in a header buffer.- See Also:
- Constant Field Values
-
UNAMELEN
private static final int UNAMELEN
The length of the user name field in a header buffer.- See Also:
- Constant Field Values
-
GNAMELEN
private static final int GNAMELEN
The length of the group name field in a header buffer.- See Also:
- Constant Field Values
-
DEVLEN
private static final int DEVLEN
The length of the devices field in a header buffer.- See Also:
- Constant Field Values
-
LF_NORMAL
private static final byte LF_NORMAL
Normal file type.- See Also:
- Constant Field Values
-
LF_DIR
private static final byte LF_DIR
Directory file type.- See Also:
- Constant Field Values
-
TMAGIC
private static final java.lang.String TMAGIC
The magic tag representing a POSIX tar archive.- See Also:
- Constant Field Values
-
GNU_LONGLINK
static java.lang.String GNU_LONGLINK
The name of the GNU tar entry which contains a long name.
-
LF_GNUTYPE_LONGNAME
static byte LF_GNUTYPE_LONGNAME
Identifies the *next* file on the tape as having a long name.
-
NAMELEN
public static final int NAMELEN
The length of the name field in a header buffer.- See Also:
- Constant Field Values
-
m_checkSum
private int m_checkSum
The entry's modification time.
-
m_devMajor
private int m_devMajor
The entry's group name.
-
m_devMinor
private int m_devMinor
The entry's major device number.
-
m_file
private java.io.File m_file
The entry's minor device number.
-
m_groupID
private int m_groupID
The entry's user id.
-
m_groupName
private java.lang.StringBuffer m_groupName
The entry's user name.
-
m_linkFlag
private byte m_linkFlag
The entry's checksum.
-
m_linkName
private java.lang.StringBuffer m_linkName
The entry's link flag.
-
m_magic
private java.lang.StringBuffer m_magic
The entry's link name.
-
m_modTime
private long m_modTime
The entry's size.
-
m_mode
private int m_mode
-
m_name
private java.lang.StringBuffer m_name
The entry's name.
-
m_size
private long m_size
The entry's group id.
-
m_userID
private int m_userID
The entry's permission mode.
-
m_userName
private java.lang.StringBuffer m_userName
The entry's magic tag.
-
-
Constructor Detail
-
TarEntry
public TarEntry(java.lang.String name)
Construct an entry with only a name. This allows the programmer to construct the entry's header "by hand". File is set to null.- Parameters:
name
- the name of the entry
-
TarEntry
public TarEntry(java.lang.String name, byte linkFlag)
Construct an entry with a name an a link flag.- Parameters:
name
- Description of ParameterlinkFlag
- Description of Parameter
-
TarEntry
public TarEntry(java.io.File file)
Construct an entry for a file. File is set to file, and the header is constructed from information from the file.- Parameters:
file
- The file that the entry represents.
-
TarEntry
public TarEntry(byte[] header)
Construct an entry from an archive's header bytes. File is set to null.- Parameters:
header
- The header bytes from a tar archive entry.
-
TarEntry
private TarEntry()
Construct an empty entry and prepares the header values.
-
-
Method Detail
-
setGroupID
public void setGroupID(int groupId)
Set this entry's group id.- Parameters:
groupId
- This entry's new group id.
-
setGroupId
public void setGroupId(int groupId)
Deprecated.Use setGroupID() insteadSet this entry's group id.- Parameters:
groupId
- This entry's new group id.- See Also:
setGroupID(int)
-
setGroupName
public void setGroupName(java.lang.String groupName)
Set this entry's group name.- Parameters:
groupName
- This entry's new group name.
-
setModTime
public void setModTime(long time)
Set this entry's modification time. The parameter passed to this method is in "Java time".- Parameters:
time
- This entry's new modification time.
-
setModTime
public void setModTime(java.util.Date time)
Set this entry's modification time.- Parameters:
time
- This entry's new modification time.
-
setMode
public void setMode(int mode)
Set the mode for this entry- Parameters:
mode
- The new Mode value
-
setName
public void setName(java.lang.String name)
Set this entry's name.- Parameters:
name
- This entry's new name.
-
setSize
public void setSize(long size)
Set this entry's file size.- Parameters:
size
- This entry's new file size.
-
setUserID
public void setUserID(int userId)
Set this entry's user id.- Parameters:
userId
- This entry's new user id.
-
setUserId
public void setUserId(int userId)
Deprecated.Use setUserID() insteadSet this entry's user id.- Parameters:
userId
- This entry's new user id.- See Also:
setUserID(int)
-
setUserName
public void setUserName(java.lang.String userName)
Set this entry's user name.- Parameters:
userName
- This entry's new user name.
-
getDirectoryEntries
public TarEntry[] getDirectoryEntries()
If this entry represents a file, and the file is a directory, return an array of TarEntries for this entry's children.- Returns:
- An array of TarEntry's for this entry's children.
-
getFile
public java.io.File getFile()
Get this entry's file.- Returns:
- This entry's file.
-
getGroupId
public int getGroupId()
Deprecated.Use getGroupID() insteadGet this entry's group id.- Returns:
- This entry's group id.
- See Also:
getGroupID()
-
getGroupID
public int getGroupID()
Get this entry's group id.- Returns:
- This entry's group id.
-
getGroupName
public java.lang.String getGroupName()
Get this entry's group name.- Returns:
- This entry's group name.
-
getModTime
public java.util.Date getModTime()
Set this entry's modification time.- Returns:
- The ModTime value
-
getMode
public int getMode()
Get this entry's mode.- Returns:
- This entry's mode.
-
getName
public java.lang.String getName()
Get this entry's name.- Returns:
- This entry's name.
-
getSize
public long getSize()
Get this entry's file size.- Returns:
- This entry's file size.
-
getCheckSum
public int getCheckSum()
Get this entry's checksum.- Returns:
- This entry's checksum.
-
getUserId
public int getUserId()
Deprecated.Use getUserID() insteadGet this entry's user id.- Returns:
- This entry's user id.
- See Also:
getUserID()
-
getUserID
public int getUserID()
Get this entry's user id.- Returns:
- This entry's user id.
-
getUserName
public java.lang.String getUserName()
Get this entry's user name.- Returns:
- This entry's user name.
-
isDescendent
public boolean isDescendent(TarEntry desc)
Determine if the given entry is a descendant of this entry. Descendancy is determined by the name of the descendant starting with this entry's name.- Parameters:
desc
- Entry to be checked as a descendent of- Returns:
- True if entry is a descendant of
-
isDirectory
public boolean isDirectory()
Return whether or not this entry represents a directory.- Returns:
- True if this entry is a directory.
-
isGNULongNameEntry
public boolean isGNULongNameEntry()
Indicate if this entry is a GNU long name block- Returns:
- true if this is a long name extension provided by GNU tar
-
equals
public boolean equals(TarEntry other)
Determine if the two entries are equal. Equality is determined by the header names being equal.- Parameters:
other
- Entry to be checked for equality.- Returns:
- True if the entries are equal.
-
parseTarHeader
private void parseTarHeader(byte[] header)
Parse an entry's header information from a header buffer.- Parameters:
header
- The tar entry header buffer to get information from.
-
writeEntryHeader
public void writeEntryHeader(byte[] buffer)
Write an entry's header information to a header buffer.- Parameters:
buffer
- The tar entry header buffer to fill in.
-
-