Class SeekableByteChannelPrefetcher
- All Implemented Interfaces:
Closeable,AutoCloseable,ByteChannel,Channel,ReadableByteChannel,SeekableByteChannel,WritableByteChannel
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionstatic SeekableByteChanneladdPrefetcher(int bufferSizeMB, SeekableByteChannel channel) Wraps the provided SeekableByteChannel within a SeekableByteChannelPrefetcher, using the provided buffer sizevoidclose()Closes this channel.fetch(long position) booleanisOpen()Tells whether or not this channel is open.longposition()Returns this channel's position.position(long newPosition) Sets this channel's position.intread(ByteBuffer dst) Reads a sequence of bytes from this channel into the given buffer.longsize()Returns the current size of entity to which this channel is connected.truncate(long size) Not supported.intwrite(ByteBuffer src) Writing isn't supported.
-
Method Details
-
addPrefetcher
public static SeekableByteChannel addPrefetcher(int bufferSizeMB, SeekableByteChannel channel) throws IOException Wraps the provided SeekableByteChannel within a SeekableByteChannelPrefetcher, using the provided buffer size- Parameters:
bufferSizeMB- buffer size in MBchannel- channel to wrap in the prefetcher- Returns:
- wrapped channel
- Throws:
IOException
-
getStatistics
-
fetch
-
read
Reads a sequence of bytes from this channel into the given buffer.Bytes are read starting at this channel's current position, and then the position is updated with the number of bytes actually read. Otherwise this method behaves exactly as specified in the
ReadableByteChannelinterface.- Specified by:
readin interfaceReadableByteChannel- Specified by:
readin interfaceSeekableByteChannel- Parameters:
dst- buffer to write into- Throws:
IOException
-
write
Writing isn't supported.- Specified by:
writein interfaceSeekableByteChannel- Specified by:
writein interfaceWritableByteChannel- Throws:
IOException
-
position
Returns this channel's position.- Specified by:
positionin interfaceSeekableByteChannel- Returns:
- This channel's position, a non-negative integer counting the number of bytes from the beginning of the entity to the current position
- Throws:
ClosedChannelException- If this channel is closedIOException- If some other I/O error occurs
-
position
Sets this channel's position.Setting the position to a value that is greater than the current size is legal but does not change the size of the entity. A later attempt to read bytes at such a position will immediately return an end-of-file indication. A later attempt to write bytes at such a position will cause the entity to grow to accommodate the new bytes; the values of any bytes between the previous end-of-file and the newly-written bytes are unspecified.
Setting the channel's position is not recommended when connected to an entity, typically a file, that is opened with the
APPENDoption. When opened for append, the position is first advanced to the end before writing.- Specified by:
positionin interfaceSeekableByteChannel- Parameters:
newPosition- The new position, a non-negative integer counting the number of bytes from the beginning of the entity- Returns:
- This channel
- Throws:
ClosedChannelException- If this channel is closedIllegalArgumentException- If the new position is negativeIOException- If some other I/O error occurs
-
size
Returns the current size of entity to which this channel is connected.- Specified by:
sizein interfaceSeekableByteChannel- Returns:
- The current size, measured in bytes
- Throws:
ClosedChannelException- If this channel is closedIOException- If some other I/O error occurs
-
truncate
Not supported.- Specified by:
truncatein interfaceSeekableByteChannel- Throws:
IOException
-
isOpen
public boolean isOpen()Tells whether or not this channel is open. -
close
Closes this channel.After a channel is closed, any further attempt to invoke I/O operations upon it will cause a
ClosedChannelExceptionto be thrown.If this channel is already closed then invoking this method has no effect.
This method may be invoked at any time. If some other thread has already invoked it, however, then another invocation will block until the first invocation is complete, after which it will return without effect.
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceChannel- Specified by:
closein interfaceCloseable- Throws:
IOException- If an I/O error occurs
-