Class TarBuffer
- java.lang.Object
-
- org.apache.commons.compress.archivers.tar.TarBuffer
-
public class TarBuffer extends java.lang.ObjectThe 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: 155439 $ $Date: 2008-07-05 20:15:52 -0400 (Sat, 05 Jul 2008) $
- Author:
- Timothy Gerard Endres, Peter Donald
-
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_BLOCKSIZEstatic intDEFAULT_RECORDSIZEprivate byte[]m_blockBufferprivate intm_blockSizeprivate intm_currBlkIdxprivate intm_currRecIdxprivate booleanm_debugprivate java.io.InputStreamm_inputprivate java.io.OutputStreamm_outputprivate intm_recordSizeprivate intm_recsPerBlock
-
Constructor Summary
Constructors Constructor Description TarBuffer(java.io.InputStream input)TarBuffer(java.io.InputStream input, int blockSize)TarBuffer(java.io.InputStream input, int blockSize, int recordSize)TarBuffer(java.io.OutputStream output)TarBuffer(java.io.OutputStream output, int blockSize)TarBuffer(java.io.OutputStream output, int blockSize, int recordSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Close the TarBuffer.protected voiddebug(java.lang.String message)private voidflushBlock()Flush the current data block if it has any data in it.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.private voidinitialize(int blockSize, int recordSize)Initialization common to all constructors.booleanisEOFRecord(byte[] record)Determine if an archive record indicate End of Archive.private booleanreadBlock()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.private voidwriteBlock()Write a TarBuffer block to the archive.voidwriteRecord(byte[] record)Write an archive record to the archive.voidwriteRecord(byte[] buffer, int offset)Write an archive record to the archive, where the record may be inside of a larger array buffer.
-
-
-
Field Detail
-
DEFAULT_RECORDSIZE
public static final int DEFAULT_RECORDSIZE
- See Also:
- Constant Field Values
-
DEFAULT_BLOCKSIZE
public static final int DEFAULT_BLOCKSIZE
- See Also:
- Constant Field Values
-
m_blockBuffer
private byte[] m_blockBuffer
-
m_blockSize
private int m_blockSize
-
m_currBlkIdx
private int m_currBlkIdx
-
m_currRecIdx
private int m_currRecIdx
-
m_debug
private boolean m_debug
-
m_input
private java.io.InputStream m_input
-
m_output
private java.io.OutputStream m_output
-
m_recordSize
private int m_recordSize
-
m_recsPerBlock
private int m_recsPerBlock
-
-
Constructor Detail
-
TarBuffer
public TarBuffer(java.io.InputStream input)
-
TarBuffer
public TarBuffer(java.io.InputStream input, int blockSize)
-
TarBuffer
public TarBuffer(java.io.InputStream input, int blockSize, int recordSize)
-
TarBuffer
public TarBuffer(java.io.OutputStream output)
-
TarBuffer
public TarBuffer(java.io.OutputStream output, int blockSize)
-
TarBuffer
public TarBuffer(java.io.OutputStream output, int blockSize, int recordSize)
-
-
Method Detail
-
setDebug
public void setDebug(boolean debug)
Set the debugging flag for the buffer.- Parameters:
debug- If true, print debugging output.
-
getBlockSize
public int getBlockSize()
Get the TAR Buffer's block size. Blocks consist of multiple records.- Returns:
- The BlockSize value
-
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 RecordSize value
-
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:
- The EOFRecord value
-
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
-
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- Description of Exception
-
skipRecord
public void skipRecord() throws java.io.IOExceptionSkip over a record on the input stream.- Throws:
java.io.IOException
-
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
-
writeRecord
public void writeRecord(byte[] buffer, 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:
buffer- The buffer containing the record data to write.offset- The offset of the record data within buf.- Throws:
java.io.IOException
-
flushBlock
private void flushBlock() throws java.io.IOExceptionFlush the current data block if it has any data in it.- Throws:
java.io.IOException
-
initialize
private void initialize(int blockSize, int recordSize)Initialization common to all constructors.
-
readBlock
private boolean readBlock() throws java.io.IOException- Returns:
- false if End-Of-File, else true
- Throws:
java.io.IOException
-
writeBlock
private void writeBlock() throws java.io.IOExceptionWrite a TarBuffer block to the archive.- Throws:
java.io.IOException- Description of Exception
-
debug
protected void debug(java.lang.String message)
-
-