|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.poi.poifs.storage.BATBlock
public final class BATBlock
A block of block allocation table entries. BATBlocks are created only through a static factory method: createBATBlocks.
Nested Class Summary | |
---|---|
static class |
BATBlock.BATBlockAndIndex
|
Field Summary | |
---|---|
protected POIFSBigBlockSize |
bigBlockSize
Either 512 bytes ( POIFSConstants.SMALLER_BIG_BLOCK_SIZE )
or 4096 bytes (POIFSConstants.LARGER_BIG_BLOCK_SIZE ) |
Method Summary | |
---|---|
static long |
calculateMaximumSize(HeaderBlock header)
|
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. |
static int |
calculateStorageRequirements(POIFSBigBlockSize bigBlockSize,
int entryCount)
Calculate how many BATBlocks are needed to hold a specified number of BAT entries. |
static int |
calculateXBATStorageRequirements(POIFSBigBlockSize bigBlockSize,
int entryCount)
Calculate how many XBATBlocks are needed to hold a specified number of BAT entries. |
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. |
static BATBlock[] |
createBATBlocks(POIFSBigBlockSize bigBlockSize,
int[] entries)
Create an array of BATBlocks from an array of int block allocation table entries |
static BATBlock |
createEmptyBATBlock(POIFSBigBlockSize bigBlockSize,
boolean isXBAT)
Creates a single BATBlock, with all the values set to empty. |
static BATBlock[] |
createXBATBlocks(POIFSBigBlockSize bigBlockSize,
int[] entries,
int startBlock)
Create an array of XBATBlocks from an array of int block allocation table entries |
protected void |
doWriteData(java.io.OutputStream stream,
byte[] data)
Default implementation of write for extending classes that contain their data in a simple array of bytes. |
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. |
int |
getOurBlockIndex()
Retrieve where in the file we live |
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. |
int |
getUsedSectors(boolean isAnXBAT)
How many sectors in this block are taken? Note that calling hasFreeSectors() is much quicker |
int |
getValueAt(int relativeOffset)
|
boolean |
hasFreeSectors()
Does this BATBlock have any free sectors in it, or is it full? |
void |
setOurBlockIndex(int index)
Record where in the file we live |
void |
setValueAt(int relativeOffset,
int value)
|
void |
writeBlocks(java.io.OutputStream stream)
Write the storage to an OutputStream |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected POIFSBigBlockSize bigBlockSize
POIFSConstants.SMALLER_BIG_BLOCK_SIZE
)
or 4096 bytes (POIFSConstants.LARGER_BIG_BLOCK_SIZE
)
Method Detail |
---|
public static BATBlock createBATBlock(POIFSBigBlockSize bigBlockSize, java.nio.ByteBuffer data)
public static BATBlock createEmptyBATBlock(POIFSBigBlockSize bigBlockSize, boolean isXBAT)
public static BATBlock[] createBATBlocks(POIFSBigBlockSize bigBlockSize, int[] entries)
entries
- the array of int entries
public static BATBlock[] createXBATBlocks(POIFSBigBlockSize bigBlockSize, int[] entries, int startBlock)
entries
- the array of int entriesstartBlock
- the start block of the array of XBAT blocks
public static int calculateStorageRequirements(POIFSBigBlockSize bigBlockSize, int entryCount)
entryCount
- the number of entries
public static int calculateXBATStorageRequirements(POIFSBigBlockSize bigBlockSize, int entryCount)
entryCount
- the number of entries
public static long calculateMaximumSize(POIFSBigBlockSize bigBlockSize, int numBATs)
public static long calculateMaximumSize(HeaderBlock header)
public static BATBlock.BATBlockAndIndex getBATBlockAndIndex(int offset, HeaderBlock header, java.util.List<BATBlock> bats)
public static BATBlock.BATBlockAndIndex getSBATBlockAndIndex(int offset, HeaderBlock header, java.util.List<BATBlock> sbats)
public boolean hasFreeSectors()
public int getUsedSectors(boolean isAnXBAT)
hasFreeSectors()
is much quicker
public int getValueAt(int relativeOffset)
public void setValueAt(int relativeOffset, int value)
public void setOurBlockIndex(int index)
public int getOurBlockIndex()
protected void doWriteData(java.io.OutputStream stream, byte[] data) throws java.io.IOException
stream
- the OutputStream to which the data should be
written.data
- the byte array of to be written.
java.io.IOException
- on problems writing to the specified
stream.public void writeBlocks(java.io.OutputStream stream) throws java.io.IOException
writeBlocks
in interface BlockWritable
stream
- the OutputStream to which the stored data should
be written
java.io.IOException
- on problems writing to the specified
stream
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |