public abstract int read (ByteBuffer dst, long position) throws IOException

Reads a sequence of bytes from this channel into the given buffer, starting at the given file position.

This method works in the same manner as the read(ByteBuffer) method, except that bytes are read starting at the given file position rather than at the channel's current position. This method does not modify this channel's position. If the given position is greater than the file's current size then no bytes are read.

dst     The buffer into which bytes are to be transferred
position     The file position at which the transfer is to begin; must be non-negative

Returns:  The number of bytes read, possibly zero, or -1 if the given position is greater than or equal to the file's current size

IllegalArgumentException     If the position is negative
NonReadableChannelException     If this channel was not opened for reading
ClosedChannelException     If this channel is closed
AsynchronousCloseException     If another thread closes this channel while the read operation is in progress
ClosedByInterruptException     If another thread interrupts the current thread while the read operation is in progress, thereby closing the channel and setting the current thread's interrupt status
IOException     If some other I/O error occurs