question: public int read ( ByteBuf dst , int dstStart , int dstLength ) throws IOException { final int remaining = ( int ) Math . min ( this . length - this . position , Integer . MAX_VALUE ) ; final int read = Math . min ( remaining , dstLength ) ; final int bufferPosition = checkOffset ( position , read ) ; final long srcAddress = PlatformDependent . directBufferAddress ( lastMapped ) + bufferPosition ; if ( dst . hasMemoryAddress ( ) ) { final long dstAddress = dst . memoryAddress ( ) + dstStart ; PlatformDependent . copyMemory ( srcAddress , dstAddress , read ) ; } else if ( dst . hasArray ( ) ) { final byte [ ] dstArray = dst . array ( ) ; PlatformDependent . copyMemory ( srcAddress , dstArray , dstStart , read ) ; } else { throw new IllegalArgumentException ( "unsupported byte buffer" ) ; } position += read ; return read ; }
target:  Reads a sequence of bytes from this file into the given buffer. <p> <p> Bytes are read starting at this file's current position, and then the position is updated with the number of bytes actually read.