Documentation of 'org.apache.poi.poifs.storage.BATBlock' Java class
BATBlock
org.apache.poi.poifs.storage

Class BATBlock

  • All Implemented Interfaces:
    BlockWritable


    public final class BATBlock
    extends java.lang.Object
    A block of block allocation table entries. BATBlocks are created only through a static factory method: createBATBlocks.
    • Method Detail

      • createBATBlock

        public static BATBlock createBATBlock(POIFSBigBlockSize bigBlockSize,
                                              java.nio.ByteBuffer data)
        Create a single BATBlock from the byte buffer, which must hold at least one big block of data to be read.
      • createEmptyBATBlock

        public static BATBlock createEmptyBATBlock(POIFSBigBlockSize bigBlockSize,
                                                   boolean isXBAT)
        Creates a single BATBlock, with all the values set to empty.
      • createBATBlocks

        public static BATBlock[] createBATBlocks(POIFSBigBlockSize bigBlockSize,
                                                 int[] entries)
        Create an array of BATBlocks from an array of int block allocation table entries
        Parameters:
        entries - the array of int entries
        Returns:
        the newly created array of BATBlocks
      • createXBATBlocks

        public static BATBlock[] createXBATBlocks(POIFSBigBlockSize bigBlockSize,
                                                  int[] entries,
                                                  int startBlock)
        Create an array of XBATBlocks from an array of int block allocation table entries
        Parameters:
        entries - the array of int entries
        startBlock - the start block of the array of XBAT blocks
        Returns:
        the newly created array of BATBlocks
      • calculateStorageRequirements

        public static int calculateStorageRequirements(POIFSBigBlockSize bigBlockSize,
                                                       int entryCount)
        Calculate how many BATBlocks are needed to hold a specified number of BAT entries.
        Parameters:
        entryCount - the number of entries
        Returns:
        the number of BATBlocks needed
      • calculateXBATStorageRequirements

        public static int calculateXBATStorageRequirements(POIFSBigBlockSize bigBlockSize,
                                                           int entryCount)
        Calculate how many XBATBlocks are needed to hold a specified number of BAT entries.
        Parameters:
        entryCount - the number of entries
        Returns:
        the number of XBATBlocks needed
      • calculateMaximumSize

        public static long calculateMaximumSize(POIFSBigBlockSize bigBlockSize,
                                                int numBATs)
        Calculates the maximum size of a file which is addressable given the number of FAT (BAT) sectors specified. (We don't care if those BAT blocks come from the 109 in the header, or from header + XBATS, it won't affect the calculation) The actual file size will be between [size of fatCount-1 blocks] and [size of fatCount blocks]. For 512 byte block sizes, this means we may over-estimate by up to 65kb. For 4096 byte block sizes, this means we may over-estimate by up to 4mb
      • calculateMaximumSize

        public static long calculateMaximumSize(HeaderBlock header)
      • getBATBlockAndIndex

        public static BATBlock.BATBlockAndIndex getBATBlockAndIndex(int offset,
                                                                    HeaderBlock header,
                                                                    java.util.List<BATBlock> bats)
        Returns the BATBlock that handles the specified offset, and the relative index within it. The List of BATBlocks must be in sequential order
      • getSBATBlockAndIndex

        public static BATBlock.BATBlockAndIndex getSBATBlockAndIndex(int offset,
                                                                     HeaderBlock header,
                                                                     java.util.List<BATBlock> sbats)
        Returns the BATBlock that handles the specified offset, and the relative index within it, for the mini stream. The List of BATBlocks must be in sequential order
      • hasFreeSectors

        public boolean hasFreeSectors()
        Does this BATBlock have any free sectors in it, or is it full?
      • getValueAt

        public int getValueAt(int relativeOffset)
      • setValueAt

        public void setValueAt(int relativeOffset,
                               int value)
      • setOurBlockIndex

        public void setOurBlockIndex(int index)
        Record where in the file we live
      • getOurBlockIndex

        public int getOurBlockIndex()
        Retrieve where in the file we live
      • writeBlocks

        public void writeBlocks(java.io.OutputStream stream)
                         throws java.io.IOException
        Write the storage to an OutputStream
        Specified by:
        writeBlocks in interface BlockWritable
        Parameters:
        stream - the OutputStream to which the stored data should be written
        Throws:
        java.io.IOException - on problems writing to the specified stream

DataMelt 3.0 © DataMelt by jWork.ORG

Ads help maintain this website.