Package org.apache.lucene.store

# Class BufferedIndexInput

java.lang.Object
org.apache.lucene.store.DataInput
org.apache.lucene.store.IndexInput
org.apache.lucene.store.BufferedIndexInput

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Cloneable`, `RandomAccessInput`

public abstract class BufferedIndexInput extends IndexInput implements RandomAccessInput
Base implementation class for buffered `IndexInput`.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `BUFFER_SIZE`
  Default buffer size set to 1024.
  `static final int`
  `MERGE_BUFFER_SIZE`
  A buffer size for merges set to 4096.
  `static final int`
  `MIN_BUFFER_SIZE`
  Minimum buffer size allowed

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BufferedIndexInput(String resourceDesc)`
  `BufferedIndexInput(String resourceDesc, int bufferSize)`
  Inits BufferedIndexInput with a specific bufferSize
  `BufferedIndexInput(String resourceDesc, IOContext context)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static int`
  `bufferSize(IOContext context)`
  Returns default buffer sizes for the given `IOContext`
  `BufferedIndexInput`
  `clone()`
  Returns a clone of this stream.
  `final int`
  `getBufferSize()`
  Returns buffer size
  `final long`
  `getFilePointer()`
  Returns the current position in this file, where the next read will occur.
  `final byte`
  `readByte()`
  Reads and returns a single byte.
  `final byte`
  `readByte(long pos)`
  Reads a byte at the given position in the file
  `final void`
  `readBytes(byte[] b, int offset, int len)`
  Reads a specified number of bytes into an array at the specified offset.
  `final void`
  `readBytes(byte[] b, int offset, int len, boolean useBuffer)`
  Reads a specified number of bytes into an array at the specified offset with control over whether the read should be buffered (callers who have their own buffer should pass in "false" for useBuffer).
  `void`
  `readBytes(long pos, byte[] bytes, int offset, int len)`
  Reads a specified number of bytes starting at a given position into an array at the specified offset.
  `void`
  `readFloats(float[] dst, int offset, int len)`
  Reads a specified number of floats into an array at the specified offset.
  `final int`
  `readInt()`
  Reads four bytes and returns an int (LE byte order).
  `final int`
  `readInt(long pos)`
  Reads an integer (LE byte order) at the given position in the file
  `protected abstract void`
  `readInternal(ByteBuffer b)`
  Expert: implements buffer refill.
  `void`
  `readInts(int[] dst, int offset, int len)`
  Reads a specified number of ints into an array at the specified offset.
  `final long`
  `readLong()`
  Reads eight bytes and returns a long (LE byte order).
  `final long`
  `readLong(long pos)`
  Reads a long (LE byte order) at the given position in the file
  `void`
  `readLongs(long[] dst, int offset, int len)`
  Read a specified number of longs.
  `final short`
  `readShort()`
  Reads two bytes and returns a short (LE byte order).
  `final short`
  `readShort(long pos)`
  Reads a short (LE byte order) at the given position in the file
  `final void`
  `seek(long pos)`
  Sets current position in this file, where the next read will occur.
  `protected abstract void`
  `seekInternal(long pos)`
  Expert: implements seek.
  `IndexInput`
  `slice(String sliceDescription, long offset, long length)`
  Creates a slice of this index input, with the given description, offset, and length.
  `static BufferedIndexInput`
  `wrap(String sliceDescription, IndexInput other, long offset, long length)`
  Wraps a portion of another IndexInput with buffering.

  ### Methods inherited from class org.apache.lucene.store.IndexInput

  `close, getFullSliceDescription, isLoaded, length, prefetch, randomAccessSlice, skipBytes, slice, toString, updateIOContext`

  ### Methods inherited from class org.apache.lucene.store.DataInput

  `readGroupVInt, readMapOfStrings, readSetOfStrings, readString, readVInt, readVLong, readZInt, readZLong`

  ### Methods inherited from class java.lang.Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface org.apache.lucene.store.RandomAccessInput

  `isLoaded, length, prefetch`

- ## Field Details

  - ### BUFFER_SIZE

    public static final int BUFFER_SIZE
    Default buffer size set to 1024.
    See Also:
      - Constant Field Values

  - ### MIN_BUFFER_SIZE

    public static final int MIN_BUFFER_SIZE
    Minimum buffer size allowed
    See Also:
      - Constant Field Values

  - ### MERGE_BUFFER_SIZE

    public static final int MERGE_BUFFER_SIZE
    A buffer size for merges set to 4096.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### BufferedIndexInput

    public BufferedIndexInput(String resourceDesc)

  - ### BufferedIndexInput

    public BufferedIndexInput(String resourceDesc, IOContext context)

  - ### BufferedIndexInput

    public BufferedIndexInput(String resourceDesc, int bufferSize)
    Inits BufferedIndexInput with a specific bufferSize

- ## Method Details

  - ### readByte

    public final byte readByte() throws IOException
    Description copied from class: `DataInput`
    Reads and returns a single byte.
    Specified by:
      `readByte` in class `DataInput`
    Throws:
      `IOException`
    See Also:
      - `DataOutput.writeByte(byte)`

  - ### getBufferSize

    public final int getBufferSize()
    Returns buffer size

  - ### readBytes

    public final void readBytes(byte[] b, int offset, int len) throws IOException
    Description copied from class: `DataInput`
    Reads a specified number of bytes into an array at the specified offset.
    Specified by:
      `readBytes` in class `DataInput`
    Parameters:
      `b` - the array to read bytes into
      `offset` - the offset in the array to start storing bytes
      `len` - the number of bytes to read
    Throws:
      `IOException`
    See Also:
      - `DataOutput.writeBytes(byte[],int)`

  - ### readBytes

    public final void readBytes(byte[] b, int offset, int len, boolean useBuffer) throws IOException
    Description copied from class: `DataInput`
    Reads a specified number of bytes into an array at the specified offset with control over whether the read should be buffered (callers who have their own buffer should pass in "false" for useBuffer). Currently only `BufferedIndexInput` respects this parameter.
    Overrides:
      `readBytes` in class `DataInput`
    Parameters:
      `b` - the array to read bytes into
      `offset` - the offset in the array to start storing bytes
      `len` - the number of bytes to read
      `useBuffer` - set to false if the caller will handle buffering.
    Throws:
      `IOException`
    See Also:
      - `DataOutput.writeBytes(byte[],int)`

  - ### readShort

    public final short readShort() throws IOException
    Description copied from class: `DataInput`
    Reads two bytes and returns a short (LE byte order).
    Overrides:
      `readShort` in class `DataInput`
    Throws:
      `IOException`
    See Also:
      - `DataOutput.writeShort(short)`
      - `BitUtil.VH_LE_SHORT`

  - ### readInt

    public final int readInt() throws IOException
    Description copied from class: `DataInput`
    Reads four bytes and returns an int (LE byte order).
    Overrides:
      `readInt` in class `DataInput`
    Throws:
      `IOException`
    See Also:
      - `DataOutput.writeInt(int)`
      - `BitUtil.VH_LE_INT`

  - ### readLong

    public final long readLong() throws IOException
    Description copied from class: `DataInput`
    Reads eight bytes and returns a long (LE byte order).
    Overrides:
      `readLong` in class `DataInput`
    Throws:
      `IOException`
    See Also:
      - `DataOutput.writeLong(long)`
      - `BitUtil.VH_LE_LONG`

  - ### readFloats

    public void readFloats(float[] dst, int offset, int len) throws IOException
    Description copied from class: `DataInput`
    Reads a specified number of floats into an array at the specified offset.
    Overrides:
      `readFloats` in class `DataInput`
    Parameters:
      `dst` - the array to read bytes into
      `offset` - the offset in the array to start storing floats
      `len` - the number of floats to read
    Throws:
      `IOException`

  - ### readLongs

    public void readLongs(long[] dst, int offset, int len) throws IOException
    Description copied from class: `DataInput`
    Read a specified number of longs.
    Overrides:
      `readLongs` in class `DataInput`
    Throws:
      `IOException`

  - ### readInts

    public void readInts(int[] dst, int offset, int len) throws IOException
    Description copied from class: `DataInput`
    Reads a specified number of ints into an array at the specified offset.
    Overrides:
      `readInts` in class `DataInput`
    Parameters:
      `dst` - the array to read bytes into
      `offset` - the offset in the array to start storing ints
      `len` - the number of ints to read
    Throws:
      `IOException`

  - ### readByte

    public final byte readByte(long pos) throws IOException
    Description copied from interface: `RandomAccessInput`
    Reads a byte at the given position in the file
    Specified by:
      `readByte` in interface `RandomAccessInput`
    Throws:
      `IOException`
    See Also:
      - `DataInput.readByte()`

  - ### readBytes

    public void readBytes(long pos, byte[] bytes, int offset, int len) throws IOException
    Description copied from interface: `RandomAccessInput`
    Reads a specified number of bytes starting at a given position into an array at the specified offset.
    Specified by:
      `readBytes` in interface `RandomAccessInput`
    Throws:
      `IOException`
    See Also:
      - `DataInput.readBytes(byte[], int, int)`

  - ### readShort

    public final short readShort(long pos) throws IOException
    Description copied from interface: `RandomAccessInput`
    Reads a short (LE byte order) at the given position in the file
    Specified by:
      `readShort` in interface `RandomAccessInput`
    Throws:
      `IOException`
    See Also:
      - `DataInput.readShort()`
      - `BitUtil.VH_LE_SHORT`

  - ### readInt

    public final int readInt(long pos) throws IOException
    Description copied from interface: `RandomAccessInput`
    Reads an integer (LE byte order) at the given position in the file
    Specified by:
      `readInt` in interface `RandomAccessInput`
    Throws:
      `IOException`
    See Also:
      - `DataInput.readInt()`
      - `BitUtil.VH_LE_INT`

  - ### readLong

    public final long readLong(long pos) throws IOException
    Description copied from interface: `RandomAccessInput`
    Reads a long (LE byte order) at the given position in the file
    Specified by:
      `readLong` in interface `RandomAccessInput`
    Throws:
      `IOException`
    See Also:
      - `DataInput.readLong()`
      - `BitUtil.VH_LE_LONG`

  - ### readInternal

    protected abstract void readInternal(ByteBuffer b) throws IOException
    Expert: implements buffer refill. Reads bytes from the current position in the input.
    Parameters:
      `b` - the buffer to read bytes into
    Throws:
      `IOException`

  - ### getFilePointer

    public final long getFilePointer()
    Description copied from class: `IndexInput`
    Returns the current position in this file, where the next read will occur.
    Specified by:
      `getFilePointer` in class `IndexInput`
    See Also:
      - `IndexInput.seek(long)`

  - ### seek

    public final void seek(long pos) throws IOException
    Description copied from class: `IndexInput`
    Sets current position in this file, where the next read will occur. If this is beyond the end of the file then this will throw `EOFException` and then the stream is in an undetermined state.
    Specified by:
      `seek` in class `IndexInput`
    Throws:
      `IOException`
    See Also:
      - `IndexInput.getFilePointer()`

  - ### seekInternal

    protected abstract void seekInternal(long pos) throws IOException
    Expert: implements seek. Sets current position in this file, where the next `readInternal(ByteBuffer)` will occur.
    Throws:
      `IOException`
    See Also:
      - `readInternal(ByteBuffer)`

  - ### clone

    public BufferedIndexInput clone()
    Description copied from class: `IndexInput`
    Returns a clone of this stream.

    Clones of a stream access the same data, and are positioned at the same point as the stream they were cloned from.

    Expert: Subclasses must ensure that clones may be positioned at different points in the input from each other and from the stream they were cloned from.

    Warning: Lucene never closes cloned `IndexInput`s, it will only call `IndexInput.close()` on the original object.

    If you access the cloned IndexInput after closing the original object, any `readXXX` methods will throw `AlreadyClosedException`.

    This method is NOT thread safe, so if the current `IndexInput` is being used by one thread while `clone` is called by another, disaster could strike.

    Overrides:
      `clone` in class `IndexInput`

  - ### slice

    public IndexInput slice(String sliceDescription, long offset, long length) throws IOException
    Description copied from class: `IndexInput`
    Creates a slice of this index input, with the given description, offset, and length. The slice is sought to the beginning.
    Specified by:
      `slice` in class `IndexInput`
    Throws:
      `IOException`

  - ### bufferSize

    public static int bufferSize(IOContext context)
    Returns default buffer sizes for the given `IOContext`

  - ### wrap

    public static BufferedIndexInput wrap(String sliceDescription, IndexInput other, long offset, long length)
    Wraps a portion of another IndexInput with buffering.

    Please note: This is in most cases ineffective, because it may double buffer!