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:
SimpleFSDirectory.SimpleFSIndexInput
public abstract class BufferedIndexInput extends IndexInput
Base implementation class for bufferedIndexInput
.
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]
buffer
static int
BUFFER_SIZE
Default buffer size
-
Constructor Summary
Constructors Constructor Description BufferedIndexInput()
Deprecated.please pass resourceDescBufferedIndexInput(int bufferSize)
Deprecated.please pass resourceDescBufferedIndexInput(String resourceDesc)
BufferedIndexInput(String resourceDesc, int bufferSize)
Inits BufferedIndexInput with a specific bufferSize
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Object
clone()
Returns a clone of this stream.void
copyBytes(IndexOutput out, long numBytes)
CopiesnumBytes
bytes to the givenIndexOutput
.protected int
flushBuffer(IndexOutput out, long numBytes)
Flushes the in-memory bufer to the given output, copying at mostnumBytes
.int
getBufferSize()
Returns buffer size.long
getFilePointer()
Returns the current position in this file, where the next read will occur.protected void
newBuffer(byte[] newBuffer)
byte
readByte()
Reads and returns a single byte.void
readBytes(byte[] b, int offset, int len)
Reads a specified number of bytes into an array at the specified offset.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).int
readInt()
Reads four bytes and returns an int.protected abstract void
readInternal(byte[] b, int offset, int length)
Expert: implements buffer refill.long
readLong()
Reads eight bytes and returns a long.short
readShort()
Reads two bytes and returns a short.int
readVInt()
Reads an int stored in variable-length format.long
readVLong()
Reads a long stored in variable-length format.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.void
setBufferSize(int newSize)
Change the buffer size used by this IndexInput-
Methods inherited from class org.apache.lucene.store.IndexInput
close, length, skipChars, toString
-
Methods inherited from class org.apache.lucene.store.DataInput
readChars, readString, readStringStringMap, setModifiedUTF8StringsMode
-
-
-
-
Field Detail
-
BUFFER_SIZE
public static final int BUFFER_SIZE
Default buffer size- See Also:
- Constant Field Values
-
buffer
protected byte[] buffer
-
-
Constructor Detail
-
BufferedIndexInput
@Deprecated public BufferedIndexInput()
Deprecated.please pass resourceDesc
-
BufferedIndexInput
public BufferedIndexInput(String resourceDesc)
-
BufferedIndexInput
@Deprecated public BufferedIndexInput(int bufferSize)
Deprecated.please pass resourceDescInits BufferedIndexInput with a specific bufferSize
-
BufferedIndexInput
public BufferedIndexInput(String resourceDesc, int bufferSize)
Inits BufferedIndexInput with a specific bufferSize
-
-
Method Detail
-
readByte
public final byte readByte() throws IOException
Description copied from class:DataInput
Reads and returns a single byte.- Specified by:
readByte
in classDataInput
- Throws:
IOException
- See Also:
DataOutput.writeByte(byte)
-
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
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 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:
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 onlyBufferedIndexInput
respects this parameter.- Overrides:
readBytes
in 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:
DataOutput.writeBytes(byte[],int)
-
readShort
public final short readShort() throws IOException
Description copied from class:DataInput
Reads two bytes and returns a short.- Overrides:
readShort
in classDataInput
- Throws:
IOException
- See Also:
DataOutput.writeByte(byte)
-
readInt
public final int readInt() throws IOException
Description copied from class:DataInput
Reads four bytes and returns an int.- Overrides:
readInt
in classDataInput
- Throws:
IOException
- See Also:
DataOutput.writeInt(int)
-
readLong
public final long readLong() throws IOException
Description copied from class:DataInput
Reads eight bytes and returns a long.- Overrides:
readLong
in classDataInput
- Throws:
IOException
- See Also:
DataOutput.writeLong(long)
-
readVInt
public final int readVInt() throws IOException
Description copied from class:DataInput
Reads an int stored in variable-length format. Reads between one and five bytes. Smaller values take fewer bytes. Negative numbers are not supported.- Overrides:
readVInt
in classDataInput
- Throws:
IOException
- See Also:
DataOutput.writeVInt(int)
-
readVLong
public final long readVLong() throws IOException
Description copied from class:DataInput
Reads a long stored in variable-length format. Reads between one and nine bytes. Smaller values take fewer bytes. Negative numbers are not supported.- Overrides:
readVLong
in classDataInput
- Throws:
IOException
-
readInternal
protected abstract void readInternal(byte[] b, int offset, int length) throws IOException
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:IndexInput
Returns the current position in this file, where the next read will occur.- Specified by:
getFilePointer
in classIndexInput
- 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.- Specified by:
seek
in classIndexInput
- 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 nextreadInternal(byte[],int,int)
will occur.- Throws:
IOException
- See Also:
readInternal(byte[],int,int)
-
clone
public Object clone()
Description copied from class:DataInput
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.
-
flushBuffer
protected final int flushBuffer(IndexOutput out, long numBytes) throws IOException
Flushes the in-memory bufer 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
-
copyBytes
public void copyBytes(IndexOutput out, long numBytes) throws IOException
Description copied from class:IndexInput
CopiesnumBytes
bytes to the givenIndexOutput
.NOTE: this method uses an intermediate buffer to copy the bytes. Consider overriding it in your implementation, if you can make a better, optimized copy.
NOTE ensure that there are enough bytes in the input to copy to output. Otherwise, different exceptions may be thrown, depending on the implementation.
- Overrides:
copyBytes
in classIndexInput
- Throws:
IOException
-
-