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)      {	if (this.blockDataPosition + length > this.blockDataBytes)	  {	    int remain = this.blockDataBytes - this.blockDataPosition;	    if (remain != 0)	      {		System.arraycopy (this.blockData, this.blockDataPosition,				  data, offset, remain);		offset += remain;		length -= remain;	      }	    readNextBlock ();	  }	System.arraycopy (this.blockData, this.blockDataPosition,			  data, offset, length);	this.blockDataPosition += length;	return length;      }    else      return this.realInputStream.read (data, offset, length);  }