Package org.apache.tools.tar
Class TarBuffer
java.lang.Object
org.apache.tools.tar.TarBuffer
public class TarBuffer
extends java.lang.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
Fields Modifier and Type Field Description static int
DEFAULT_BLKSIZE
Default block sizestatic int
DEFAULT_RCDSIZE
Default record size -
Constructor Summary
Constructors Constructor Description TarBuffer(java.io.InputStream inStream)
Constructor for a TarBuffer on an input stream.TarBuffer(java.io.InputStream inStream, int blockSize)
Constructor for a TarBuffer on an input stream.TarBuffer(java.io.InputStream inStream, int blockSize, int recordSize)
Constructor for a TarBuffer on an input stream.TarBuffer(java.io.OutputStream outStream)
Constructor for a TarBuffer on an output stream.TarBuffer(java.io.OutputStream outStream, int blockSize)
Constructor for a TarBuffer on an output stream.TarBuffer(java.io.OutputStream outStream, int blockSize, int recordSize)
Constructor for a TarBuffer on an output stream. -
Method Summary
Modifier and Type Method Description void
close()
Close the TarBuffer.int
getBlockSize()
Get the TAR Buffer's block size.int
getCurrentBlockNum()
Get the current block number, zero based.int
getCurrentRecordNum()
Get the current record number, within the current block, zero based.int
getRecordSize()
Get the TAR Buffer's record size.boolean
isEOFRecord(byte[] record)
Determine if an archive record indicate End of Archive.byte[]
readRecord()
Read a record from the input stream and return the data.void
setDebug(boolean debug)
Set the debugging flag for the buffer.void
skipRecord()
Skip over a record on the input stream.void
writeRecord(byte[] record)
Write an archive record to the archive.void
writeRecord(byte[] buf, int offset)
Write an archive record to the archive, where the record may be inside of a larger array buffer.
-
Field Details
-
DEFAULT_RCDSIZE
public static final int DEFAULT_RCDSIZEDefault record size- See Also:
- Constant Field Values
-
DEFAULT_BLKSIZE
public static final int DEFAULT_BLKSIZEDefault block size- See Also:
- Constant Field Values
-
-
Constructor Details
-
TarBuffer
public TarBuffer(java.io.InputStream inStream)Constructor for a TarBuffer on an input stream.- Parameters:
inStream
- the input stream to use
-
TarBuffer
public TarBuffer(java.io.InputStream inStream, int blockSize)Constructor for a TarBuffer on an input stream.- Parameters:
inStream
- the input stream to useblockSize
- the block size to use
-
TarBuffer
public TarBuffer(java.io.InputStream inStream, int blockSize, int recordSize)Constructor for a TarBuffer on an input stream.- Parameters:
inStream
- the input stream to useblockSize
- the block size to userecordSize
- the record size to use
-
TarBuffer
public TarBuffer(java.io.OutputStream outStream)Constructor for a TarBuffer on an output stream.- Parameters:
outStream
- the output stream to use
-
TarBuffer
public TarBuffer(java.io.OutputStream outStream, int blockSize)Constructor for a TarBuffer on an output stream.- Parameters:
outStream
- the output stream to useblockSize
- the block size to use
-
TarBuffer
public TarBuffer(java.io.OutputStream outStream, int blockSize, int recordSize)Constructor for a TarBuffer on an output stream.- Parameters:
outStream
- the output stream to useblockSize
- the block size to userecordSize
- the record size to use
-
-
Method Details
-
getBlockSize
public int getBlockSize()Get the TAR Buffer's block size. Blocks consist of multiple records.- Returns:
- the block size
-
getRecordSize
public int getRecordSize()Get the TAR Buffer's record size.- Returns:
- the record size
-
setDebug
public void setDebug(boolean debug)Set the debugging flag for the buffer.- Parameters:
debug
- If true, print debugging output.
-
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
-
skipRecord
public void skipRecord() throws java.io.IOExceptionSkip over a record on the input stream.- Throws:
java.io.IOException
- on error
-
readRecord
public byte[] readRecord() throws java.io.IOExceptionRead a record from the input stream and return the data.- Returns:
- The record data.
- Throws:
java.io.IOException
- on error
-
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.
-
writeRecord
public void writeRecord(byte[] record) throws java.io.IOExceptionWrite an archive record to the archive.- Parameters:
record
- The record data to write to the archive.- Throws:
java.io.IOException
- on error
-
writeRecord
public void writeRecord(byte[] buf, int offset) throws java.io.IOExceptionWrite 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:
java.io.IOException
- on error
-
close
public void close() throws java.io.IOExceptionClose the TarBuffer. If this is an output buffer, also flush the current block before closing.- Throws:
java.io.IOException
- on error
-