@Override public int read(byte[] b,int off,int len) throws IOException {
  int n=in.read(b,off,len);
  if (n == -1) {
    throwIfFalseEOF();
  }
 else {
    bytesRead+=n;
  }
  return n;
}

@ Override public int read ( byte [ ] b , int off , int len ) throws IOException { int n = in . read ( b , off , len ) ; if ( n == - 1 ) { throwIfFalseEOF ( ) ; } else { bytesRead += n ; } return n ; }
java . io . inputstream # read ( byte [ ] , int , int ) swallows ioexception thrown from read ( ) so we have to override it .
