public int read(byte[] data, int offset, int length) throws IOException
public int read() throws IOException
  public int read(byte[] data, int offset, int length) throws IOException  {    if (this.readDataFromBlock)      {        int remain = this.blockDataBytes - this.blockDataPosition;        if (remain == 0)          {            readNextBlock();            remain = this.blockDataBytes - this.blockDataPosition;          }        length = Math.min(length, remain);	System.arraycopy(this.blockData, this.blockDataPosition,			 data, offset, length);	this.blockDataPosition += length;	return length;      }    else      return this.realInputStream.read(data, offset, length);  }