protected long write ( RandomAccessReader reader , ChecksumValidator validator , int start , long length , long bytesTransferred ) throws IOException { int toTransfer = ( int ) Math . min ( transferBuffer . length , length - bytesTransferred ) ; int minReadable = ( int ) Math . min ( transferBuffer . length , reader . length ( ) - reader . getFilePointer ( ) ) ; reader . readFully ( transferBuffer , 0 , minReadable ) ; if ( validator != null ) validator . validate ( transferBuffer , 0 , minReadable ) ; limiter . acquire ( toTransfer - start ) ; compressedOutput . write ( transferBuffer , start , ( toTransfer - start ) ) ; return toTransfer ; }
Sequentially read bytes from the file and write them to the output stream