de.esprit.appsuite.io.archive.javatar

## Class TarBuffer

- java.lang.Object
- - de.esprit.appsuite.io.archive.javatar.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.

  Version:
    $Revision: 1.2 $
  Author:
    Timothy Gerard Endres, time@trustice.com.
  See Also:
    `TarArchive`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_BLKSIZE`
    `static int` | `DEFAULT_RCDSIZE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TarBuffer(java.io.InputStream inStream)`
    `TarBuffer(java.io.InputStream inStream, int blockSize)`
    `TarBuffer(java.io.InputStream inStream, int blockSize, int recordSize)`
    `TarBuffer(java.io.OutputStream outStream)`
    `TarBuffer(java.io.OutputStream outStream, int blockSize)`
    `TarBuffer(java.io.OutputStream outStream, int blockSize, int recordSize)`

  - ### Method Summary

    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

      See Also:
        Constant Field Values

    - #### DEFAULT_BLKSIZE

          public static final int DEFAULT_BLKSIZE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### TarBuffer

          public TarBuffer(java.io.InputStream inStream)

    - #### TarBuffer

          public TarBuffer(java.io.InputStream inStream,
                   int blockSize)

    - #### TarBuffer

          public TarBuffer(java.io.InputStream inStream,
                   int blockSize,
                   int recordSize)

    - #### TarBuffer

          public TarBuffer(java.io.OutputStream outStream)

    - #### TarBuffer

          public TarBuffer(java.io.OutputStream outStream,
                   int blockSize)

    - #### TarBuffer

          public TarBuffer(java.io.OutputStream outStream,
                   int blockSize,
                   int recordSize)

  - ### Method Detail

    - #### 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

          public void skipRecord()
                          throws java.io.IOException

      Skip over a record on the input stream.
      Throws:
        `java.io.IOException`

    - #### 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`

    - #### 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`

    - #### 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`

    - #### 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`

Copyright © 2014 EsprIT-Systems. All Rights Reserved.