org.apache.tools.tar

Class TarBuffer

public class TarBuffer extends Object

The TarBuffer class implements the tar archive concept of a buffered input stream. This concept goes back to the days of blocked tape drives and special io devices. In the Java universe, the only real function that this class performs is to ensure that files have the correct "block" size, or other tars will complain.

You should never have a need to access this class directly. TarBuffers are created by Tar IO Streams.

Field Summary
static intDEFAULT_BLKSIZE
Default block size
static intDEFAULT_RCDSIZE
Default record size
Constructor Summary
TarBuffer(InputStream inStream)
Constructor for a TarBuffer on an input stream.
TarBuffer(InputStream inStream, int blockSize)
Constructor for a TarBuffer on an input stream.
TarBuffer(InputStream inStream, int blockSize, int recordSize)
Constructor for a TarBuffer on an input stream.
TarBuffer(OutputStream outStream)
Constructor for a TarBuffer on an output stream.
TarBuffer(OutputStream outStream, int blockSize)
Constructor for a TarBuffer on an output stream.
TarBuffer(OutputStream outStream, int blockSize, int recordSize)
Constructor for a TarBuffer on an output stream.
Method Summary
voidclose()
Close the TarBuffer.
intgetBlockSize()
Get the TAR Buffer's block size.
intgetCurrentBlockNum()
Get the current block number, zero based.
intgetCurrentRecordNum()
Get the current record number, within the current block, zero based.
intgetRecordSize()
Get the TAR Buffer's record size.
booleanisEOFRecord(byte[] record)
Determine if an archive record indicate End of Archive.
byte[]readRecord()
Read a record from the input stream and return the data.
voidsetDebug(boolean debug)
Set the debugging flag for the buffer.
voidskipRecord()
Skip over a record on the input stream.
voidwriteRecord(byte[] record)
Write an archive record to the archive.
voidwriteRecord(byte[] buf, int offset)
Write an archive record to the archive, where the record may be inside of a larger array buffer.

Field Detail

DEFAULT_BLKSIZE

public static final int DEFAULT_BLKSIZE
Default block size

DEFAULT_RCDSIZE

public static final int DEFAULT_RCDSIZE
Default record size

Constructor Detail

TarBuffer

public TarBuffer(InputStream inStream)
Constructor for a TarBuffer on an input stream.

Parameters: inStream the input stream to use

TarBuffer

public TarBuffer(InputStream inStream, int blockSize)
Constructor for a TarBuffer on an input stream.

Parameters: inStream the input stream to use blockSize the block size to use

TarBuffer

public TarBuffer(InputStream inStream, int blockSize, int recordSize)
Constructor for a TarBuffer on an input stream.

Parameters: inStream the input stream to use blockSize the block size to use recordSize the record size to use

TarBuffer

public TarBuffer(OutputStream outStream)
Constructor for a TarBuffer on an output stream.

Parameters: outStream the output stream to use

TarBuffer

public TarBuffer(OutputStream outStream, int blockSize)
Constructor for a TarBuffer on an output stream.

Parameters: outStream the output stream to use blockSize the block size to use

TarBuffer

public TarBuffer(OutputStream outStream, int blockSize, int recordSize)
Constructor for a TarBuffer on an output stream.

Parameters: outStream the output stream to use blockSize the block size to use recordSize the record size to use

Method Detail

close

public void close()
Close the TarBuffer. If this is an output buffer, also flush the current block before closing.

Throws: IOException on error

getBlockSize

public int getBlockSize()
Get the TAR Buffer's block size. Blocks consist of multiple records.

Returns: the block size

getCurrentBlockNum

public int getCurrentBlockNum()
Get the current block number, zero based.

Returns: The current zero based block number.

getCurrentRecordNum

public int getCurrentRecordNum()
Get the current record number, within the current block, zero based. Thus, current offset = (currentBlockNum * recsPerBlk) + currentRecNum.

Returns: The current zero based record number.

getRecordSize

public int getRecordSize()
Get the TAR Buffer's record size.

Returns: the record size

isEOFRecord

public boolean isEOFRecord(byte[] record)
Determine if an archive record indicate End of Archive. End of archive is indicated by a record that consists entirely of null bytes.

Parameters: record The record data to check.

Returns: true if the record data is an End of Archive

readRecord

public byte[] readRecord()
Read a record from the input stream and return the data.

Returns: The record data.

Throws: IOException on error

setDebug

public void setDebug(boolean debug)
Set the debugging flag for the buffer.

Parameters: debug If true, print debugging output.

skipRecord

public void skipRecord()
Skip over a record on the input stream.

Throws: IOException on error

writeRecord

public void writeRecord(byte[] record)
Write an archive record to the archive.

Parameters: record The record data to write to the archive.

Throws: IOException on error

writeRecord

public void writeRecord(byte[] buf, int offset)
Write an archive record to the archive, where the record may be inside of a larger array buffer. The buffer must be "offset plus record size" long.

Parameters: buf The buffer containing the record data to write. offset The offset of the record data within buf.

Throws: IOException on error