Class NPOIFSMiniStore
java.lang.Object
org.docx4j.org.apache.poi.poifs.filesystem.BlockStore
org.docx4j.org.apache.poi.poifs.filesystem.NPOIFSMiniStore
public class NPOIFSMiniStore extends BlockStore
This class handles the MiniStream (small block store)
in the NIO case for
NPOIFSFileSystem-
Nested Class Summary
Nested classes/interfaces inherited from class org.docx4j.org.apache.poi.poifs.filesystem.BlockStore
BlockStore.ChainLoopDetector -
Constructor Summary
Constructors Modifier Constructor Description protectedNPOIFSMiniStore(NPOIFSFileSystem filesystem, RootProperty root, java.util.List<BATBlock> sbats, HeaderBlock header) -
Method Summary
Modifier and Type Method Description protected java.nio.ByteBuffercreateBlockIfNeeded(int offset)Load the block, extending the underlying stream if neededprotected BATBlock.BATBlockAndIndexgetBATBlockAndIndex(int offset)Returns the BATBlock that handles the specified offset, and the relative index within itprotected java.nio.ByteBuffergetBlockAt(int offset)Load the block at the given offset.protected intgetBlockStoreBlockSize()Returns the size of the blocks managed through the block store.protected BlockStore.ChainLoopDetectorgetChainLoopDetector()Creates a Detector for loops in the chainprotected intgetFreeBlock()Finds a free block, and returns its offset.protected intgetNextBlock(int offset)Works out what block follows the specified one.protected voidsetNextBlock(int offset, int nextBlock)Changes the record of what block follows the specified one.protected voidsyncWithDataSource()Writes the SBATs to their backing blocks, and updates the mini-stream size in the properties.
-
Constructor Details
-
NPOIFSMiniStore
protected NPOIFSMiniStore(NPOIFSFileSystem filesystem, RootProperty root, java.util.List<BATBlock> sbats, HeaderBlock header)
-
-
Method Details
-
getBlockAt
protected java.nio.ByteBuffer getBlockAt(int offset) throws java.io.IOExceptionLoad the block at the given offset.- Specified by:
getBlockAtin classBlockStore- Throws:
java.io.IOException
-
createBlockIfNeeded
protected java.nio.ByteBuffer createBlockIfNeeded(int offset) throws java.io.IOExceptionLoad the block, extending the underlying stream if needed- Specified by:
createBlockIfNeededin classBlockStore- Throws:
java.io.IOException
-
getBATBlockAndIndex
Returns the BATBlock that handles the specified offset, and the relative index within it- Specified by:
getBATBlockAndIndexin classBlockStore
-
getNextBlock
protected int getNextBlock(int offset)Works out what block follows the specified one.- Specified by:
getNextBlockin classBlockStore
-
setNextBlock
protected void setNextBlock(int offset, int nextBlock)Changes the record of what block follows the specified one.- Specified by:
setNextBlockin classBlockStore
-
getFreeBlock
protected int getFreeBlock() throws java.io.IOExceptionFinds a free block, and returns its offset. This method will extend the file if needed, and if doing so, allocate new FAT blocks to address the extra space.- Specified by:
getFreeBlockin classBlockStore- Throws:
java.io.IOException
-
getChainLoopDetector
Description copied from class:BlockStoreCreates a Detector for loops in the chain- Specified by:
getChainLoopDetectorin classBlockStore- Throws:
java.io.IOException
-
getBlockStoreBlockSize
protected int getBlockStoreBlockSize()Description copied from class:BlockStoreReturns the size of the blocks managed through the block store.- Specified by:
getBlockStoreBlockSizein classBlockStore
-
syncWithDataSource
protected void syncWithDataSource() throws java.io.IOExceptionWrites the SBATs to their backing blocks, and updates the mini-stream size in the properties. Stream size is based on full blocks used, not the data within the streams- Throws:
java.io.IOException
-