com.ice.tar
Class TarArchive
public class TarArchive
extends Object
The TarArchive class implements the concept of a
tar archive. A tar archive is a series of entries, each of
which represents a file system object. Each entry in
the archive consists of a header record. Directory entries
consist only of the header record, and are followed by entries
for the directory's contents. File entries consist of a
header record followed by the number of records needed to
contain the file's contents. All entries are written on
record boundaries. Records are 512 bytes long.
TarArchives are instantiated in either read or write mode,
based upon whether they are instantiated with an InputStream
or an OutputStream. Once instantiated TarArchives read/write
mode can not be changed.
There is currently no support for random access to tar archives.
However, it seems that subclassing TarArchive, and using the
TarBuffer.getCurrentRecordNum() and TarBuffer.getCurrentBlockNum()
methods, this would be rather trvial.
TarArchive(InputStream inStream) - The InputStream based constructors create a TarArchive for the
purposes of e'x'tracting or lis't'ing a tar archive.
|
TarArchive(InputStream inStream, int blockSize)
|
TarArchive(InputStream inStream, int blockSize, int recordSize)
|
TarArchive(OutputStream outStream) - The OutputStream based constructors create a TarArchive for the
purposes of 'c'reating a tar archive.
|
TarArchive(OutputStream outStream, int blockSize)
|
TarArchive(OutputStream outStream, int blockSize, int recordSize)
|
void | closeArchive() - Close the archive.
|
void | extractContents(File destDir) - Perform the "extract" command and extract the contents of the archive.
|
int | getGroupId() - Get the group id being used for archive entry headers.
|
String | getGroupName() - Get the group name being used for archive entry headers.
|
int | getRecordSize() - Get the archive's record size.
|
String | getTempDirectory() - Get the current temporary directory path.
|
int | getUserId() - Get the user id being used for archive entry headers.
|
String | getUserName() - Get the user name being used for archive entry headers.
|
boolean | isVerbose() - Returns the verbosity setting.
|
void | listContents() - Perform the "list" command and list the contents of the archive.
|
void | setAsciiTranslation(boolean asciiTranslate) - Set the ascii file translation flag.
|
void | setDebug(boolean debugF) - Set the debugging flag.
|
void | setKeepOldFiles(boolean keepOldFiles) - Set the flag that determines whether existing files are
kept, or overwritten during extraction.
|
void | setTarProgressDisplay(TarProgressDisplay display) - Set the current progress display interface.
|
void | setTempDirectory(String path) - Set the current temporary directory path.
|
void | setTransFileTyper(TarTransFileTyper transTyper) - Set the object that will determine if a file is of type
ascii text for translation purposes.
|
void | setUserInfo(int userId, String userName, int groupId, String groupName) - Set user and group information that will be used to fill in the
tar archive's entry headers.
|
void | setVerbose(boolean verbose) - Set the verbosity flag.
|
void | writeEntry(TarEntry oldEntry, boolean recurse) - Write an entry to the archive.
|
asciiTranslate
protected boolean asciiTranslate
debug
protected boolean debug
groupId
protected int groupId
groupName
protected String groupName
keepOldFiles
protected boolean keepOldFiles
pathPrefix
protected String pathPrefix
recordBuf
protected byte[] recordBuf
recordSize
protected int recordSize
rootPath
protected String rootPath
tempPath
protected String tempPath
userId
protected int userId
userName
protected String userName
verbose
protected boolean verbose
TarArchive
public TarArchive(InputStream inStream)
The InputStream based constructors create a TarArchive for the
purposes of e'x'tracting or lis't'ing a tar archive. Thus, use
these constructors when you wish to extract files from or list
the contents of an existing tar archive.
TarArchive
public TarArchive(InputStream inStream,
int blockSize)
TarArchive
public TarArchive(InputStream inStream,
int blockSize,
int recordSize)
TarArchive
public TarArchive(OutputStream outStream)
The OutputStream based constructors create a TarArchive for the
purposes of 'c'reating a tar archive. Thus, use these constructors
when you wish to create a new tar archive and write files into it.
TarArchive
public TarArchive(OutputStream outStream,
int blockSize)
TarArchive
public TarArchive(OutputStream outStream,
int blockSize,
int recordSize)
closeArchive
public void closeArchive()
throws IOException
Close the archive. This simply calls the underlying
tar stream's close() method.
extractContents
public void extractContents(File destDir)
throws IOException,
InvalidHeaderException
Perform the "extract" command and extract the contents of the archive.
destDir
- The destination directory into which to extract.
getGroupId
public int getGroupId()
Get the group id being used for archive entry headers.
getGroupName
public String getGroupName()
Get the group name being used for archive entry headers.
getRecordSize
public int getRecordSize()
Get the archive's record size. Because of its history, tar
supports the concept of buffered IO consisting of BLOCKS of
RECORDS. This allowed tar to match the IO characteristics of
the physical device being used. Of course, in the Java world,
this makes no sense, WITH ONE EXCEPTION - archives are expected
to be propertly "blocked". Thus, all of the horrible TarBuffer
support boils down to simply getting the "boundaries" correct.
- The record size this archive is using.
getTempDirectory
public String getTempDirectory()
Get the current temporary directory path. Because Java's
File did not support temporary files until version 1.2,
TarArchive manages its own concept of the temporary
directory. The temporary directory defaults to the
'user.dir' System property.
- The current temporary directory path.
getUserId
public int getUserId()
Get the user id being used for archive entry headers.
getUserName
public String getUserName()
Get the user name being used for archive entry headers.
isVerbose
public boolean isVerbose()
Returns the verbosity setting.
- The current verbosity setting.
listContents
public void listContents()
throws IOException,
InvalidHeaderException
Perform the "list" command and list the contents of the archive.
NOTE That this method uses the progress display to actually list
the conents. If the progress display is not set, nothing will be
listed!
setAsciiTranslation
public void setAsciiTranslation(boolean asciiTranslate)
Set the ascii file translation flag. If ascii file translatio
is true, then the MIME file type will be consulted to determine
if the file is of type 'text/*'. If the MIME type is not found,
then the TransFileTyper is consulted if it is not null. If
either of these two checks indicates the file is an ascii text
file, it will be translated. The translation converts the local
operating system's concept of line ends into the UNIX line end,
'\n', which is the defacto standard for a TAR archive. This makes
text files compatible with UNIX, and since most tar implementations
for other platforms, compatible with most other platforms.
asciiTranslate
- If true, translate ascii text files.
setDebug
public void setDebug(boolean debugF)
Set the debugging flag.
debugF
- The new debug setting.
setKeepOldFiles
public void setKeepOldFiles(boolean keepOldFiles)
Set the flag that determines whether existing files are
kept, or overwritten during extraction.
keepOldFiles
- If true, do not overwrite existing files.
setTarProgressDisplay
public void setTarProgressDisplay(TarProgressDisplay display)
Set the current progress display interface. This allows the
programmer to use a custom class to display the progress of
the archive's processing.
display
- The new progress display interface.
setTempDirectory
public void setTempDirectory(String path)
Set the current temporary directory path.
path
- The new temporary directory path.
setTransFileTyper
public void setTransFileTyper(TarTransFileTyper transTyper)
Set the object that will determine if a file is of type
ascii text for translation purposes.
transTyper
- The new TransFileTyper object.
setUserInfo
public void setUserInfo(int userId,
String userName,
int groupId,
String groupName)
Set user and group information that will be used to fill in the
tar archive's entry headers. Since Java currently provides no means
of determining a user name, user id, group name, or group id for
a given File, TarArchive allows the programmer to specify values
to be used in their place.
userId
- The user Id to use in the headers.userName
- The user name to use in the headers.groupId
- The group id to use in the headers.groupName
- The group name to use in the headers.
setVerbose
public void setVerbose(boolean verbose)
Set the verbosity flag.
verbose
- The new verbosity setting.
writeEntry
public void writeEntry(TarEntry oldEntry,
boolean recurse)
throws IOException
Write an entry to the archive. This method will call the putNextEntry()
and then write the contents of the entry, and finally call closeEntry()
for entries that are files. For directories, it will call putNextEntry(),
and then, if the recurse flag is true, process each entry that is a
child of the directory.
recurse
- If true, process the children of directory entries.
This software has been placed into the public domain.