public class TarEntry
extends java.lang.Object
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;
TarInputStream
,
TarOutputStream
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.
|
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.
|
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() instead
|
int |
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() instead
|
int |
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 block
|
private void |
parseTarHeader(byte[] header) |
Parse an entry's header information from a header buffer.
|
void |
setGroupId(int groupId) |
Deprecated.
Use setGroupID() instead
|
void |
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 entry
|
void |
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() instead
|
void |
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.
|
private static final int MODELEN
private static final int UIDLEN
private static final int GIDLEN
private static final int CHKSUMLEN
private static final int SIZELEN
private static final int MAGICLEN
private static final int MODTIMELEN
private static final int UNAMELEN
private static final int GNAMELEN
private static final int DEVLEN
private static final byte LF_NORMAL
private static final byte LF_DIR
private static final java.lang.String TMAGIC
static java.lang.String GNU_LONGLINK
static byte LF_GNUTYPE_LONGNAME
public static final int NAMELEN
private int m_checkSum
private int m_devMajor
private int m_devMinor
private java.io.File m_file
private int m_groupID
private java.lang.StringBuffer m_groupName
private byte m_linkFlag
private java.lang.StringBuffer m_linkName
private java.lang.StringBuffer m_magic
private long m_modTime
private int m_mode
private java.lang.StringBuffer m_name
private long m_size
private int m_userID
private java.lang.StringBuffer m_userName
public TarEntry(java.lang.String name)
name
- the name of the entrypublic TarEntry(java.lang.String name, byte linkFlag)
name
- Description of ParameterlinkFlag
- Description of Parameterpublic TarEntry(java.io.File file)
file
- The file that the entry represents.public TarEntry(byte[] header)
header
- The header bytes from a tar archive entry.private TarEntry()
public void setGroupID(int groupId)
groupId
- This entry's new group id.public void setGroupId(int groupId)
groupId
- This entry's new group id.setGroupID(int)
public void setGroupName(java.lang.String groupName)
groupName
- This entry's new group name.public void setModTime(long time)
time
- This entry's new modification time.public void setModTime(java.util.Date time)
time
- This entry's new modification time.public void setMode(int mode)
mode
- The new Mode valuepublic void setName(java.lang.String name)
name
- This entry's new name.public void setSize(long size)
size
- This entry's new file size.public void setUserID(int userId)
userId
- This entry's new user id.public void setUserId(int userId)
userId
- This entry's new user id.setUserID(int)
public void setUserName(java.lang.String userName)
userName
- This entry's new user name.public TarEntry[] getDirectoryEntries()
public java.io.File getFile()
public int getGroupId()
getGroupID()
public int getGroupID()
public java.lang.String getGroupName()
public java.util.Date getModTime()
public int getMode()
public java.lang.String getName()
public long getSize()
public int getCheckSum()
public int getUserId()
getUserID()
public int getUserID()
public java.lang.String getUserName()
public boolean isDescendent(TarEntry desc)
desc
- Entry to be checked as a descendent ofpublic boolean isDirectory()
public boolean isGNULongNameEntry()
public boolean equals(TarEntry other)
other
- Entry to be checked for equality.private void parseTarHeader(byte[] header)
header
- The tar entry header buffer to get information from.public void writeEntryHeader(byte[] buffer)
buffer
- The tar entry header buffer to fill in.