## org.apache.poi.poifs.storage
Class DataInputBlock

    java.lang.Object
      org.apache.poi.poifs.storage.DataInputBlock

    public final class DataInputBlock

extends java.lang.Object

Wraps a `byte` array and provides simple data input access. Internally, this class maintains a buffer read index, so that for the most part, primitive data can be read in a data-input-stream-like manner.

Note - the calling class should call the `available()` method to detect end-of-buffer and move to the next data block when the current is exhausted. For optimisation reasons, no error handling is performed in this class. Thus, mistakes in calling code ran may raise ugly exceptions here, like `ArrayIndexOutOfBoundsException`, etc .

The multi-byte primitive input methods (`readUShortLE()`, `readIntLE()` and `readLongLE()`) have corresponding 'spanning read' methods which (when required) perform a read across the block boundary. These spanning read methods take the previous `DataInputBlock` as a parameter. Reads of larger amounts of data (into `byte` array buffers) must be managed by the caller since these could conceivably involve more than two blocks.

Author:
  Josh Micich

Method Summary
`int` `available()`
`void` `readFully(byte[] buf, int off, int len)` Reads `len` bytes from this block into the supplied buffer.
`int` `readIntLE()` Reads an `int` which was encoded in little endian format.
`int` `readIntLE(DataInputBlock prevBlock, int prevBlockAvailable)` Reads an `int` which spans the end of `prevBlock` and the start of this block.
`long` `readLongLE()` Reads a `long` which was encoded in little endian format.
`long` `readLongLE(DataInputBlock prevBlock, int prevBlockAvailable)` Reads a `long` which spans the end of `prevBlock` and the start of this block.
`int` `readUByte()`
`int` `readUShortLE()` Reads a `short` which was encoded in little endian format.
`int` `readUShortLE(DataInputBlock prevBlock)` Reads a `short` which spans the end of `prevBlock` and the start of this block.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### available

    public int available()

### readUByte

    public int readUByte()

### readUShortLE

    public int readUShortLE()

  Reads a `short` which was encoded in little endian format.

### readUShortLE

    public int readUShortLE(DataInputBlock prevBlock)

  Reads a `short` which spans the end of `prevBlock` and the start of this block.

### readIntLE

    public int readIntLE()

  Reads an `int` which was encoded in little endian format.

### readIntLE

    public int readIntLE(DataInputBlock prevBlock,
                         int prevBlockAvailable)

  Reads an `int` which spans the end of `prevBlock` and the start of this block.

### readLongLE

    public long readLongLE()

  Reads a `long` which was encoded in little endian format.

### readLongLE

    public long readLongLE(DataInputBlock prevBlock,
                           int prevBlockAvailable)

  Reads a `long` which spans the end of `prevBlock` and the start of this block.

### readFully

    public void readFully(byte[] buf,
                          int off,
                          int len)

  Reads `len` bytes from this block into the supplied buffer.

Copyright 2012 The Apache Software Foundation or its licensors, as applicable.