DocumentBlockpublic class DocumentBlock extends BigBlock A block of document data. |
Fields Summary |
---|
private static final byte | _default_value | private byte[] | _data | private int | _bytes_read |
Constructors Summary |
---|
public DocumentBlock(RawDataBlock block)create a document block from a raw data block
_data = block.getData();
_bytes_read = _data.length;
| public DocumentBlock(InputStream stream)Create a single instance initialized with data.
this();
int count = IOUtils.readFully(stream, _data);
_bytes_read = (count == -1) ? 0
: count;
| private DocumentBlock()Create a single instance initialized with default values
_data = new byte[ POIFSConstants.BIG_BLOCK_SIZE ];
Arrays.fill(_data, _default_value);
|
Methods Summary |
---|
public static org.apache.poi.poifs.storage.DocumentBlock[] | convert(byte[] array, int size)convert a single long array into an array of DocumentBlock
instances
DocumentBlock[] rval =
new DocumentBlock[ (size + POIFSConstants.BIG_BLOCK_SIZE - 1) / POIFSConstants.BIG_BLOCK_SIZE ];
int offset = 0;
for (int k = 0; k < rval.length; k++)
{
rval[ k ] = new DocumentBlock();
if (offset < array.length)
{
int length = Math.min(POIFSConstants.BIG_BLOCK_SIZE,
array.length - offset);
System.arraycopy(array, offset, rval[ k ]._data, 0, length);
if (length != POIFSConstants.BIG_BLOCK_SIZE)
{
Arrays.fill(rval[ k ]._data, length,
POIFSConstants.BIG_BLOCK_SIZE,
_default_value);
}
}
else
{
Arrays.fill(rval[ k ]._data, _default_value);
}
offset += POIFSConstants.BIG_BLOCK_SIZE;
}
return rval;
| public static byte | getFillByte()
return _default_value;
| public boolean | partiallyRead()Was this a partially read block?
return _bytes_read != POIFSConstants.BIG_BLOCK_SIZE;
| public static void | read(org.apache.poi.poifs.storage.DocumentBlock[] blocks, byte[] buffer, int offset)read data from an array of DocumentBlocks
int firstBlockIndex = offset / POIFSConstants.BIG_BLOCK_SIZE;
int firstBlockOffset = offset % POIFSConstants.BIG_BLOCK_SIZE;
int lastBlockIndex = (offset + buffer.length - 1)
/ POIFSConstants.BIG_BLOCK_SIZE;
if (firstBlockIndex == lastBlockIndex)
{
System.arraycopy(blocks[ firstBlockIndex ]._data,
firstBlockOffset, buffer, 0, buffer.length);
}
else
{
int buffer_offset = 0;
System.arraycopy(blocks[ firstBlockIndex ]._data,
firstBlockOffset, buffer, buffer_offset,
POIFSConstants.BIG_BLOCK_SIZE
- firstBlockOffset);
buffer_offset += POIFSConstants.BIG_BLOCK_SIZE - firstBlockOffset;
for (int j = firstBlockIndex + 1; j < lastBlockIndex; j++)
{
System.arraycopy(blocks[ j ]._data, 0, buffer, buffer_offset,
POIFSConstants.BIG_BLOCK_SIZE);
buffer_offset += POIFSConstants.BIG_BLOCK_SIZE;
}
System.arraycopy(blocks[ lastBlockIndex ]._data, 0, buffer,
buffer_offset, buffer.length - buffer_offset);
}
| public int | size()Get the number of bytes read for this block
return _bytes_read;
| void | writeData(java.io.OutputStream stream)Write the block's data to an OutputStream
doWriteData(stream, _data);
|
|