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
- Direct Known Subclasses:
FSDirectory.FSIndexInput
Base implementation class for buffered
IndexInput.-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected byte[]static final intDefault buffer size set to 1024.static final intA buffer size for merges set to 4096. -
Constructor Summary
ConstructorsConstructorDescriptionBufferedIndexInput(String resourceDesc) BufferedIndexInput(String resourceDesc, int bufferSize) Inits BufferedIndexInput with a specific bufferSizeBufferedIndexInput(String resourceDesc, IOContext context) -
Method Summary
Modifier and TypeMethodDescriptionstatic intbufferSize(IOContext context) Returns default buffer sizes for the givenIOContextclone()Returns a clone of this stream.protected final intflushBuffer(IndexOutput out, long numBytes) Flushes the in-memory buffer to the given output, copying at mostnumBytes.final intReturns buffer size.final longReturns the current position in this file, where the next read will occur.protected voidnewBuffer(byte[] newBuffer) final bytereadByte()Reads and returns a single byte.final voidreadBytes(byte[] b, int offset, int len) Reads a specified number of bytes into an array at the specified offset.final voidreadBytes(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).final intreadInt()Reads four bytes and returns an int.protected abstract voidreadInternal(byte[] b, int offset, int length) Expert: implements buffer refill.final longreadLong()Reads eight bytes and returns a long.final shortReads two bytes and returns a short.final intreadVInt()Reads an int stored in variable-length format.final longReads a long stored in variable-length format.final voidseek(long pos) Sets current position in this file, where the next read will occur.protected abstract voidseekInternal(long pos) Expert: implements seek.final voidsetBufferSize(int newSize) Change the buffer size used by this IndexInputMethods inherited from class org.apache.lucene.store.IndexInput
close, length, toStringMethods inherited from class org.apache.lucene.store.DataInput
readString, readStringSet, readStringStringMap
-
Field Details
-
BUFFER_SIZE
public static final int BUFFER_SIZEDefault buffer size set to 1024.- See Also:
-
MERGE_BUFFER_SIZE
public static final int MERGE_BUFFER_SIZEA buffer size for merges set to 4096.- See Also:
-
buffer
protected byte[] buffer
-
-
Constructor Details
-
BufferedIndexInput
-
BufferedIndexInput
-
BufferedIndexInput
Inits BufferedIndexInput with a specific bufferSize
-
-
Method Details
-
readByte
Description copied from class:DataInputReads and returns a single byte.- Specified by:
readBytein classDataInput- Throws:
IOException- See Also:
-
setBufferSize
public final void setBufferSize(int newSize) Change the buffer size used by this IndexInput -
newBuffer
protected void newBuffer(byte[] newBuffer) -
getBufferSize
public final int getBufferSize()Returns buffer size. @see #setBufferSize -
readBytes
Description copied from class:DataInputReads a specified number of bytes into an array at the specified offset.- Specified by:
readBytesin classDataInput- Parameters:
b- the array to read bytes intooffset- the offset in the array to start storing byteslen- the number of bytes to read- Throws:
IOException- See Also:
-
readBytes
Description copied from class:DataInputReads 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 onlyBufferedIndexInputrespects this parameter.- Overrides:
readBytesin classDataInput- Parameters:
b- the array to read bytes intooffset- the offset in the array to start storing byteslen- the number of bytes to readuseBuffer- set to false if the caller will handle buffering.- Throws:
IOException- See Also:
-
readShort
Description copied from class:DataInputReads two bytes and returns a short.- Overrides:
readShortin classDataInput- Throws:
IOException- See Also:
-
readInt
Description copied from class:DataInputReads four bytes and returns an int.- Overrides:
readIntin classDataInput- Throws:
IOException- See Also:
-
readLong
Description copied from class:DataInputReads eight bytes and returns a long.- Overrides:
readLongin classDataInput- Throws:
IOException- See Also:
-
readVInt
Description copied from class:DataInputReads an int stored in variable-length format. Reads between one and five bytes. Smaller values take fewer bytes. Negative numbers are not supported.The format is described further in
DataOutput.writeVInt(int).- Overrides:
readVIntin classDataInput- Throws:
IOException- See Also:
-
readVLong
Description copied from class:DataInputReads a long stored in variable-length format. Reads between one and nine bytes. Smaller values take fewer bytes. Negative numbers are not supported.The format is described further in
DataOutput.writeVInt(int).- Overrides:
readVLongin classDataInput- Throws:
IOException- See Also:
-
readInternal
Expert: implements buffer refill. Reads bytes from the current position in the input.- Parameters:
b- the array to read bytes intooffset- the offset in the array to start storing byteslength- the number of bytes to read- Throws:
IOException
-
getFilePointer
public final long getFilePointer()Description copied from class:IndexInputReturns the current position in this file, where the next read will occur.- Specified by:
getFilePointerin classIndexInput- See Also:
-
seek
Description copied from class:IndexInputSets current position in this file, where the next read will occur.- Specified by:
seekin classIndexInput- Throws:
IOException- See Also:
-
seekInternal
Expert: implements seek. Sets current position in this file, where the nextreadInternal(byte[],int,int)will occur.- Throws:
IOException- See Also:
-
clone
Description copied from class:IndexInputReturns 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
IndexInputs, it will only do this on the original one. The original instance must take care that cloned instances throwAlreadyClosedExceptionwhen the original one is closed.- Overrides:
clonein classIndexInput
-
flushBuffer
Flushes the in-memory buffer to the given output, copying at mostnumBytes.NOTE: this method does not refill the buffer, however it does advance the buffer position.
- Returns:
- the number of bytes actually flushed from the in-memory buffer.
- Throws:
IOException
-
bufferSize
Returns default buffer sizes for the givenIOContext
-