@Override
public int read(final byte b[], final int off, final int len) throws IOException {
if(this.readLimit > 0 && (this.readCount + len) > this.readLimit) {
this.readCount += doRead(b, off, this.readLimit - this.readCount);
throw new ExceedLimitException();
} else {
this.readCount += doRead(b, off, len);
return len; // always read the number of bytes specified by parameter "len"
}
}