Class TarBuffer
java.lang.Object
org.jboss.shrinkwrap.impl.base.io.tar.TarBuffer
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.
- Version:
- $Revision: 1.10 $
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate byte[]
private int
private int
private int
private boolean
static final int
static final int
private InputStream
private OutputStream
private int
private int
-
Constructor Summary
ConstructorsConstructorDescriptionTarBuffer
(InputStream inStream) TarBuffer
(InputStream inStream, int blockSize) TarBuffer
(InputStream inStream, int blockSize, int recordSize) TarBuffer
(OutputStream outStream) TarBuffer
(OutputStream outStream, int blockSize) TarBuffer
(OutputStream outStream, int blockSize, int recordSize) -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Close the TarBuffer.private void
Flush the current data block if it has any data in it.int
Get the TAR Buffer's block size.int
Get the current block number, zero based.int
Get the current record number, within the current block, zero based.int
Get the TAR Buffer's record size.private void
initialize
(int blockSize, int recordSize) Initialization common to all constructors.boolean
isEOFRecord
(byte[] record) Determine if an archive record indicate End of Archive.private boolean
byte[]
Read a record from the input stream and return the data.void
setDebug
(boolean debug) Set the debugging flag for the buffer.void
Skip over a record on the input stream.private void
Write a TarBuffer block to the archive.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_RCDSIZE- See Also:
-
DEFAULT_BLKSIZE
public static final int DEFAULT_BLKSIZE- See Also:
-
inStream
-
outStream
-
blockBuffer
private byte[] blockBuffer -
currBlkIdx
private int currBlkIdx -
currRecIdx
private int currRecIdx -
blockSize
private int blockSize -
recordSize
private int recordSize -
recsPerBlock
private int recsPerBlock -
debug
private boolean debug
-
-
Constructor Details
-
TarBuffer
-
TarBuffer
-
TarBuffer
-
TarBuffer
-
TarBuffer
-
TarBuffer
-
-
Method Details
-
initialize
private void initialize(int blockSize, int recordSize) Initialization common to all constructors. -
getBlockSize
public int getBlockSize()Get the TAR Buffer's block size. Blocks consist of multiple records. -
getRecordSize
public int getRecordSize()Get the TAR Buffer's 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.
-
skipRecord
Skip over a record on the input stream.- Throws:
IOException
-
readRecord
Read a record from the input stream and return the data.- Returns:
- The record data.
- Throws:
IOException
-
readBlock
- Returns:
- false if End-Of-File, else true
- Throws:
IOException
-
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
Write an archive record to the archive.- Parameters:
record
- The record data to write to the archive.- Throws:
IOException
-
writeRecord
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
-
writeBlock
Write a TarBuffer block to the archive.- Throws:
IOException
-
flushBlock
Flush the current data block if it has any data in it.- Throws:
IOException
-
close
Close the TarBuffer. If this is an output buffer, also flush the current block before closing.- Throws:
IOException
-