in src/main/java/org/apache/commons/io/input/CharSequenceInputStream.java [293:320]
public int read(final byte[] array, int off, int len) throws IOException {
Objects.requireNonNull(array, "array");
if (len < 0 || off + len > array.length) {
throw new IndexOutOfBoundsException("Array Size=" + array.length + ", offset=" + off + ", length=" + len);
}
if (len == 0) {
return 0; // must return 0 for zero length read
}
if (!this.bBuf.hasRemaining() && !this.cBuf.hasRemaining()) {
return EOF;
}
int bytesRead = 0;
while (len > 0) {
if (this.bBuf.hasRemaining()) {
final int chunk = Math.min(this.bBuf.remaining(), len);
this.bBuf.get(array, off, chunk);
off += chunk;
len -= chunk;
bytesRead += chunk;
} else {
fillBuffer();
if (!this.bBuf.hasRemaining() && !this.cBuf.hasRemaining()) {
break;
}
}
}
return bytesRead == 0 && !this.cBuf.hasRemaining() ? EOF : bytesRead;
}