org.apache.poi.poifs.storage

## Class HeaderBlock

- java.lang.Object
- - org.apache.poi.poifs.storage.HeaderBlock

- All Implemented Interfaces:
    HeaderBlockConstants

      public final class HeaderBlock
      extends java.lang.Object
      implements HeaderBlockConstants

  The block containing the archive header

- - ### Field Summary

    - ### Fields inherited from interface org.apache.poi.poifs.storage.HeaderBlockConstants

      `_bat_array_offset, _bat_count_offset, _max_bats_in_header, _property_start_offset, _sbat_block_count_offset, _sbat_start_offset, _signature, _signature_offset, _xbat_count_offset, _xbat_start_offset`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HeaderBlock(java.nio.ByteBuffer buffer)`
    `HeaderBlock(java.io.InputStream stream)` create a new HeaderBlockReader from an InputStream
    `HeaderBlock(POIFSBigBlockSize bigBlockSize)` Create a single instance initialized with default values

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int[]` | `getBATArray()` Returns the offsets to the first (up to) 109 BAT sectors.
    `int` | `getBATCount()`
    `POIFSBigBlockSize` | `getBigBlockSize()`
    `int` | `getPropertyStart()` get start of Property Table
    `int` | `getSBATCount()`
    `int` | `getSBATStart()`
    `int` | `getXBATCount()`
    `int` | `getXBATIndex()`
    `void` | `setBATArray(int[] bat_array)` Sets the offsets of the first (up to) 109 BAT sectors.
    `void` | `setBATCount(int count)` Sets the number of BAT blocks that are used.
    `void` | `setPropertyStart(int startBlock)` Set start of Property Table
    `void` | `setSBATBlockCount(int count)` Set count of SBAT blocks
    `void` | `setSBATStart(int startBlock)` Set start of small block allocation table
    `void` | `setXBATCount(int count)` Sets the number of XBAT (DIFAT) blocks used
    `void` | `setXBATStart(int startBlock)` Sets the first XBAT (DIFAT) block location
    `void` | `writeData(java.io.OutputStream stream)` Write the block's data to an OutputStream

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### HeaderBlock

          public HeaderBlock(java.io.InputStream stream)
                      throws java.io.IOException

      create a new HeaderBlockReader from an InputStream
      Parameters:
        `stream` - the source InputStream
      Throws:
        `java.io.IOException` - on errors or bad data

    - #### HeaderBlock

          public HeaderBlock(java.nio.ByteBuffer buffer)
                      throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### HeaderBlock

          public HeaderBlock(POIFSBigBlockSize bigBlockSize)

      Create a single instance initialized with default values

  - ### Method Detail

    - #### getPropertyStart

          public int getPropertyStart()

      get start of Property Table
      Returns:
        the index of the first block of the Property Table

    - #### setPropertyStart

          public void setPropertyStart(int startBlock)

      Set start of Property Table
      Parameters:
        `startBlock` - the index of the first block of the Property Table

    - #### getSBATStart

          public int getSBATStart()

      Returns:
        start of small block (MiniFAT) allocation table

    - #### getSBATCount

          public int getSBATCount()

    - #### setSBATStart

          public void setSBATStart(int startBlock)

      Set start of small block allocation table
      Parameters:
        `startBlock` - the index of the first big block of the small block allocation table

    - #### setSBATBlockCount

          public void setSBATBlockCount(int count)

      Set count of SBAT blocks
      Parameters:
        `count` - the number of SBAT blocks

    - #### getBATCount

          public int getBATCount()

      Returns:
        number of BAT blocks

    - #### setBATCount

          public void setBATCount(int count)

      Sets the number of BAT blocks that are used. This is the number used in both the BAT and XBAT.

    - #### getBATArray

          public int[] getBATArray()

      Returns the offsets to the first (up to) 109 BAT sectors. Any additional BAT sectors are held in the XBAT (DIFAT) sectors in a chain.
      Returns:
        BAT offset array

    - #### setBATArray

          public void setBATArray(int[] bat_array)

      Sets the offsets of the first (up to) 109 BAT sectors.

    - #### getXBATCount

          public int getXBATCount()

      Returns:
        XBAT (DIFAT) count

    - #### setXBATCount

          public void setXBATCount(int count)

      Sets the number of XBAT (DIFAT) blocks used

    - #### getXBATIndex

          public int getXBATIndex()

      Returns:
        XBAT (DIFAT) index

    - #### setXBATStart

          public void setXBATStart(int startBlock)

      Sets the first XBAT (DIFAT) block location

    - #### getBigBlockSize

          public POIFSBigBlockSize getBigBlockSize()

      Returns:
        The Big Block size, normally 512 bytes, sometimes 4096 bytes

    - #### writeData

          public void writeData(java.io.OutputStream stream)
                         throws java.io.IOException

      Write the block's data to an OutputStream
      Parameters:
        `stream` - the OutputStream to which the stored data should be written
      Throws:
        `java.io.IOException` - on problems writing to the specified stream

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.