in src/main/java/org/apache/commons/io/input/buffer/CircularByteBuffer.java [242:267]
public void read(final byte[] targetBuffer, final int targetOffset, final int length) {
Objects.requireNonNull(targetBuffer, "targetBuffer");
if (targetOffset < 0 || targetOffset >= targetBuffer.length) {
throw new IllegalArgumentException("Illegal offset: " + targetOffset);
}
if (length < 0 || length > buffer.length) {
throw new IllegalArgumentException("Illegal length: " + length);
}
if (targetOffset + length > targetBuffer.length) {
throw new IllegalArgumentException("The supplied byte array contains only "
+ targetBuffer.length + " bytes, but offset, and length would require "
+ (targetOffset + length - 1));
}
if (currentNumberOfBytes < length) {
throw new IllegalStateException("Currently, there are only " + currentNumberOfBytes
+ "in the buffer, not " + length);
}
int offset = targetOffset;
for (int i = 0; i < length; i++) {
targetBuffer[offset++] = buffer[startOffset];
--currentNumberOfBytes;
if (++startOffset == buffer.length) {
startOffset = 0;
}
}
}