Class HeaderBlock

java.lang.Object
org.docx4j.org.apache.poi.poifs.storage.HeaderBlock
All Implemented Interfaces:
HeaderBlockConstants

public final class HeaderBlock extends Object implements HeaderBlockConstants
The block containing the archive header
  • Field Details

    • _logger

      private static org.slf4j.Logger _logger
    • bigBlockSize

      private final POIFSBigBlockSize bigBlockSize
      What big block size the file uses. Most files use 512 bytes, but a few use 4096
    • _bat_count

      private int _bat_count
      Number of big block allocation table blocks (int). (Number of FAT Sectors in Microsoft parlance).
    • _property_start

      private int _property_start
      Start of the property set block (int index of the property set chain's first big block).
    • _sbat_start

      private int _sbat_start
      start of the small block allocation table (int index of small block allocation table's first big block)
    • _sbat_count

      private int _sbat_count
      Number of small block allocation table blocks (int) (Number of MiniFAT Sectors in Microsoft parlance)
    • _xbat_start

      private int _xbat_start
      Big block index for extension to the big block allocation table
    • _xbat_count

      private int _xbat_count
      Number of big block allocation table blocks (int) (Number of DIFAT Sectors in Microsoft parlance)
    • _data

      private final byte[] _data
      The data. Only ever 512 bytes, because 4096 byte files use zeros for the extra header space.
    • _default_value

      private static final byte _default_value
      See Also:
  • Constructor Details

  • Method Details

    • readFirst512

      private static byte[] readFirst512(InputStream stream) throws IOException
      Throws:
      IOException
    • longToHex

      private static String longToHex(long value)
    • alertShortRead

      private static IOException alertShortRead(int pRead, int expectedReadSize)
    • 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

      void writeData(OutputStream stream) throws IOException
      Write the block's data to an OutputStream
      Parameters:
      stream - the OutputStream to which the stored data should be written
      Throws:
      IOException - on problems writing to the specified stream