@Override public int read(byte bytes[],int offset,int length) throws IOException {
  int r;
  if ((r=in.read(bytes,offset,length)) == -1)   return r;
  md5.Update(bytes,offset,r);
  return r;
}

@ Override public int read ( byte bytes [ ] , int offset , int length ) throws IOException { int r ; if ( ( r = in . read ( bytes , offset , length ) ) == - 1 ) return r ; md5 . Update ( bytes , offset , r ) ; return r ; }
reads into an array of bytes .
