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 and Description
      static int DEFAULT_BLKSIZE
      Default block size
      static int DEFAULT_RCDSIZE
      Default record size
    • Constructor Summary

      Constructors 
      Constructor and 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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_RCDSIZE

        public static final int DEFAULT_RCDSIZE
        Default record size
        See Also:
        Constant Field Values
      • DEFAULT_BLKSIZE

        public static final int DEFAULT_BLKSIZE
        Default block size
        See Also:
        Constant Field Values
    • Constructor Detail

      • 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 use
        blockSize - 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 use
        blockSize - the block size to use
        recordSize - 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 use
        blockSize - 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 use
        blockSize - the block size to use
        recordSize - the record size to use
    • Method Detail

      • 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.IOException
        Skip over a record on the input stream.
        Throws:
        java.io.IOException - on error
      • readRecord

        public byte[] readRecord()
                          throws java.io.IOException
        Read 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.IOException
        Write 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.IOException
        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:
        java.io.IOException - on error
      • close

        public void close()
                   throws java.io.IOException
        Close the TarBuffer. If this is an output buffer, also flush the current block before closing.
        Throws:
        java.io.IOException - on error